有post_syncdb
信号可以在 syncdb 之后执行可以执行的操作。在加载固定装置后,即在命令之后,是否有类似的钩子来执行一些操作python manage.py loaddata
?
我有一个脚本,可以创建一个新数据库、运行 migrate (syncdb) 并从 JSON 设备加载数据。发布所有这些,我想为已创建的用户创建组和权限。我在哪里插入该代码?
PS 使用post_migrate
而不是post_syncdb
1.7+
有post_syncdb
信号可以在 syncdb 之后执行可以执行的操作。在加载固定装置后,即在命令之后,是否有类似的钩子来执行一些操作python manage.py loaddata
?
我有一个脚本,可以创建一个新数据库、运行 migrate (syncdb) 并从 JSON 设备加载数据。发布所有这些,我想为已创建的用户创建组和权限。我在哪里插入该代码?
PS 使用post_migrate
而不是post_syncdb
1.7+
研究如何在管理命令中触发post_migrate
(或post_syncdb
)信号,请参阅:
emit_post_migrate_signal()
handle()
在方法结束时调用emit_post_migrate_signal()
负责发送models.signals.post_migrate
信号根据我们所见,您应该尝试以下方法:
创建自定义管理命令的子类化loaddata
Command
和覆盖handle()
方法:
from django.core.management.commands.loaddata import Command
class MyCommand(Command):
def handle(self, *fixture_labels, **options):
super(MyCommand, self).handle(*fixture_labels, **options)
my_signal.send(sender=self.__class__, my_argument=my_argument_value)
没有亲自测试过这个。希望对你有效。