Jeśli chcesz mieć możliwość - tak jak ja - naprawdę rozpocząć od nowej bazy danych bez pytania o superużytkownika, możesz po prostu wyrejestrować program obsługi sygnału, który zadaje to pytanie. Sprawdź sam dół pliku:
django/contrib/auth/management/__init__.py
aby zobaczyć, jak wykonywana jest rejestracja funkcji superużytkownika. Okazało się, że mogę cofnąć tę rejestrację i nigdy nie zostałem zadany pytanie podczas „syncdb”, gdybym umieścił ten kod w moim „models.py”:
from django.db.models import signals
from django.contrib.auth.management import create_superuser
from django.contrib.auth import models as auth_app
signals.post_syncdb.disconnect(
create_superuser,
sender=auth_app,
dispatch_uid = "django.contrib.auth.management.create_superuser")
Nie jestem pewien, jak zagwarantować, że ten kod zostanie uruchomiony po kodzie Django, który dokonuje rejestracji. Myślałem, że będzie to zależeć od tego, czy twoja aplikacja lub aplikacja django.contrib.auth zostanie wymieniona jako pierwsza w INSTALLED_APPS, ale wydaje mi się, że działa to niezależnie od kolejności, w jakiej je umieściłem. Może są zrobione alfabetycznie i jestem szczęście, że nazwa mojej aplikacji zaczyna się na literę późniejszą niż „d”? A może Django jest wystarczająco sprytny, aby najpierw robić swoje własne rzeczy, a potem moje, na wypadek, gdybym chciał się bawić z ich ustawieniami? Daj mi znać, jeśli się dowiesz. :-)
syncdb
został wycofany na korzyść migracji danych