2

最初のスーパーユーザーが作成されたときに送信される特定のシグナルがあるかどうかを知りたいです。私が実行syncdbしてスーパーユーザーを作成するように求められたときのことです。その時点で、シグナルを使用して初期化を行うことができるように、シグナルが送信されているかどうかを知りたいです。または、最初のスーパー ユーザーが作成された瞬間にのみコードを実行する方法はありますか。そのコードを最初に一度だけ実行したい。助けてください。この質問が理にかなっているといいのですが...最近、私の質問が意味をなさないという批判を受けています。これがそうであることを願っています

4

2 に答える 2

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 に答える
1

post_syncdbスーパーユーザーの作成はsignalによって呼び出されます。シグナルにフックして、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 に答える