创建第一个超级用户后初始化

时间:2013-03-09 08:49:20

标签: django django-signals django-syncdb

我想知道在创建第一个超级用户时是否发送了任何特定信号。在谈论我运行syncdb并被要求创建超级用户时。此时我想知道是否发送了任何信号,以便我可以使用该信号进行一些初始化。或者有一种方法我只能在创建第一个超级用户的那一刻运行一段代码。我希望这段代码在开始时只运行一次。帮帮忙。我希望这个问题有道理......最近我被批评说我的问题没有意义。我希望这个确实

2 个答案:

答案 0 :(得分:1)

def superuser_creation(sender, instance, created, **kwargs):
    user = kwargs['instance']
    if user.is_superuser:
        //do something here

post_save.connect(superuser_creation, sender=User)

答案 1 :(得分:1)

post_syncdb signal调用超级用户的创建,您也可以挂钩post_syncdb信号并在之后运行额外的代码。

将以下代码添加到您的某个应用的management/__init__.py,并确保该应用的路径位于django.contrib.auth内的settings.INSTALLED_APPS下。

from django.contrib.auth import models as auth_app
from django.db.models import signals

def operate_upon_first_superuser_after_syncdb(app, created_models, verbosity, db, **kwargs):
    if auth_app.User in created_models and kwargs.get('interactive', True):
        if auth_app.User.objects.filter(is_superuser=True).exists():
            # ... extra code here

signals.post_syncdb.connect(operate_upon_first_superuser_after_syncdb,
     sender=auth_app, dispatch_uid='operate_upon_first_superuser_after_syncdb')