생성됩니다. syncdb
을 실행할 때 슈퍼 유저를 생성하라는 메시지가 표시됩니다. 그 시점에서 어떤 신호가 보내 졌는지 알기를 원합니다. 신호를 사용하여 초기화를 할 수 있습니다. 아니면 첫 번째 슈퍼 유저가 생성되었을 때만 코드를 실행할 수있는 방법이 있습니다. 그 코드가 처음에는 단 한 번만 실행되기를 바랍니다. 도움이 pls. 나는이 질문이 의미가 있기를 바란다 ... 늦게 나는 나의 질문이 의미가 없다는 비판을 받고있다. 난 당신이뿐만 아니라 post_syncdb
신호에 끼어 이후 여분의 코드를 실행할 수 있습니다,이 하나가초기화는
Q
초기화는
2
내가 처음 수퍼 유저가 생성 될 때 전송 된 특정 신호가 있는지 알고 싶어
A
답변
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)
+0
문제는 : syncdb가 아직 끝나지 않았기 때문입니다. 다른 테이블을 포함하는 여기 뭔가가 작동하지 않을 위험이 있습니다. 다른 솔루션은 더욱 견고 해 보입니다. – cyberjoac
1
수퍼 유저의 작성이 post_syncdb
signal에 의해 호출하지 바랍니다.
다음 코드를 앱 중 하나의 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')
문제의 문제점은 왜 우리가 원하는 것을해야하는지 알려주지 않는다는 것입니다. 어쩌면 당신은 또 다른 문제가 있고 이것을하지 않고 쉽게 고칠 수 있습니다 ... 나는 정말로 당신이 그 신호를 다루어야하는 이유를 정말로 알고 싶습니다 .... – marianobianchi