有post_syncdb
信号可以执行可在syncdb之后执行的操作。是否有类似的钩子在加载灯具后执行某些操作,即在python manage.py loaddata
命令之后?
我有一个脚本可以创建一个新数据库,运行migrate(syncdb)并从JSON fixture中加载数据。发布所有这些,我想创建群组&已创建用户的权限。我在哪里插入该代码?
P.S。 1.7 +
使用post_migrate
代替post_syncdb
答案 0 :(得分:3)
研究如何在管理命令中触发post_migrate
(或post_syncdb
)信号,请参阅:
emit_post_migrate_signal()
在handle()
方法emit_post_migrate_signal()
如何负责发送models.signals.post_migrate
信号从我们所看到的,这是你应该尝试的:
create a custom management command继承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)
没有亲自测试过这个。希望它适合你。