挂起以在loaddata命令(加载夹具)之后执行操作

时间:2014-10-30 15:06:48

标签: django django-fixtures django-migrations

post_syncdb信号可以执行可在syncdb之后执行的操作。是否有类似的钩子在加载灯具后执行某些操作,即在python manage.py loaddata命令之后?

我有一个脚本可以创建一个新数据库,运行migrate(syncdb)并从JSON fixture中加载数据。发布所有这些,我想创建群组&已创建用户的权限。我在哪里插入该代码?

P.S。 1.7 +

使用post_migrate代替post_syncdb

1 个答案:

答案 0 :(得分:3)

Read the source, Luke

研究如何在管理命令中触发post_migrate(或post_syncdb)信号,请参阅:

从我们所看到的,这是你应该尝试的:

  • create a custom signal(以及您将创建群组和权限的监听器)
  • 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)
    

没有亲自测试过这个。希望它适合你。