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