Wenn Sie - wie ich - die Möglichkeit haben möchten, wirklich mit einer neuen Datenbank zu beginnen, ohne diese Superuser-Frage gestellt zu bekommen, können Sie den Signal-Handler, der diese Frage stellt, einfach abmelden. Schauen Sie sich das Ende der Datei an:
django/contrib/auth/management/__init__.py
um zu sehen, wie die Registrierung der Superuser-Funktion durchgeführt wird. Ich habe festgestellt, dass ich diese Registrierung rückgängig machen kann und die Frage während "syncdb" nie gestellt wird, wenn ich diesen Code in meine "models.py" eingefügt habe:
from django.db.models import signals
from django.contrib.auth.management import create_superuser
from django.contrib.auth import models as auth_app
# Prevent interactive question about wanting a superuser created. (This
# code has to go in this otherwise empty "models" module so that it gets
# processed by the "syncdb" command during database creation.)
signals.post_syncdb.disconnect(
create_superuser,
sender=auth_app,
dispatch_uid = "django.contrib.auth.management.create_superuser")
Ich bin nicht sicher, wie ich garantieren kann, dass dieser Code nach dem Django-Code ausgeführt wird, der die Registrierung vornimmt. Ich hatte gedacht, dass es davon abhängen würde, ob Ihre App oder die App django.contrib.auth zuerst in INSTALLED_APPS erwähnt wird, aber es scheint für mich zu funktionieren, unabhängig von der Reihenfolge, in der ich sie eingebe. Vielleicht werden sie alphabetisch erstellt und ich bin es Glück, dass der Name meiner App mit einem Buchstaben später als "d" beginnt? Oder ist Django gerade klug genug, um zuerst seine eigenen Sachen zu machen, dann meine, falls ich mit ihren Einstellungen Mist machen möchte? Lassen Sie mich wissen, wenn Sie es herausfinden. :-)
syncdb
wurde zugunsten von Datenmigrationen veraltet