2

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

4

2 回答 2

1

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

将以下代码放入management/__init__.py您的一个应用程序的 中,并确保该应用程序的路径位于django.contrib.auth、 in下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')
于 2013-03-09T12:57:05.470 回答
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)
于 2013-03-09T09:22:33.070 回答