There's post_syncdb
signal to perform actions that can be done after syncdb. Is there a similar hook to perform some actions after loading fixtures i.e. after python manage.py loaddata
command ?
I have a script that creates a new database, runs migrate (syncdb) and loads data from JSON fixtures. Post all this, I want to create groups & permissions for users that have been created. Where do I plug that code?
P.S. Use post_migrate
instead of post_syncdb
for 1.7+
Research how post_migrate
(or post_syncdb
) signal is fired in the management command, see:
emit_post_migrate_signal()
call at the end of the handle()
methodemit_post_migrate_signal()
is responsible for sending models.signals.post_migrate
signal From what we've seen, here is what you should try:
create a custom management command subclassing loaddata
Command
and overriding handle()
method:
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)
Haven't personally tested this. Hope it works for you.