0

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

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

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

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

4

1 回答 1

0

实际上有很简单的方法可以做到这一点。

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

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

将发件人类设置为 django.contrib.auth.models.User

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

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

于 2014-03-05T07:37:14.350 回答