【问题标题】:Whenever a new user is created, I want to create a "starter kit" of records for that user that is the same for all users每当创建新用户时,我都想为该用户创建一个对所有用户都相同的记录“入门工具包”
【发布时间】:2014-03-04 22:38:15
【问题描述】:

我已经阅读了 Django 的文档,这些文档表明在创建 APP 时使用了 Fixtures 或 SQL。但是我想在每次添加新用户时添加相同的夹具。我没有看到一个简单的方法来做到这一点。我认为 Signals.py 可能是一种方法,但我看不到如何确保在没有 ID 的情况下添加 Fixture。

夹具文档:https://docs.djangoproject.com/en/dev/howto/initial-data/

例如,建议为每个用户启动 5 个任务。因此,每次创建新用户时,我都希望将这些任务添加到新用户帐户中。任务对用户有一个 FK。

我愿意就如何完成这项工作提出建议。

【问题讨论】:

    标签: django django-models django-views django-users django-fixtures


    【解决方案1】:

    其实有很简单的方法。

    在某处创建您的初始数据字典。任何合乎逻辑的地方都是好的。

    创建信号: https://docs.djangoproject.com/en/dev/ref/signals/#post-save

    将发送者类设置为 django.contrib.auth.models.User

    在信号上调用的方法接收对象实例作为参数之一。不幸的是,在该信号中,您无法检查用户是否是新用户,因此您必须检查用户是否通过外键链接了“入门套件”模型。如果没有,请根据您的初始数据创建您自己的模型。

    另一种方法是扩展 django.contrib.auth.models.User 并将您自己的自定义信号添加到它的保存方法中,仅在保存没有 pk 的用户时调用。在这种情况下,您可以确保每次调用信号时,您都必须创建新的“入门工具包”。

    【讨论】:

    • 喜欢你的第一个建议。感觉更便携。我会玩那个。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多