注:バージョン1.7syncdb
コマンドは非推奨であるため。migrate
代わりに使用してください。
また、Django 1.7では、アプリケーションの初期化プロセスをカスタマイズする手段としてAppConfigが導入されました。
したがって、Django 1.7以降、必要なことを実現する最も簡単な方法は、AppConfig
のサブクラスを使用することです。
たとえば、自分にexample_app
追加された独自のユーザーがいて、最初から実行するときはいつでも、管理者パスワードを使用してユーザーINSTALLED_APPS
を作成および管理したいとします。私はまた、自動管理者ユーザの作成のみで必要とされていることを前提とDEVないで-環境生産。./manage.py migrate
次のコードをに追加します example_app/apps.py
from django.apps import AppConfig
from django.conf import settings
from django.db.models.signals import post_migrate
from django.contrib.auth.apps import AuthConfig
USERNAME = "admin"
PASSWORD = "admin"
def create_test_user(sender, **kwargs):
if not settings.DEBUG:
return
if not isinstance(sender, AuthConfig):
return
from django.contrib.auth.models import User
manager = User.objects
try:
manager.get(username=USERNAME)
except User.DoesNotExist:
manager.create_superuser(USERNAME, 'x@x.com', PASSWORD)
class ExampleAppConfig(AppConfig):
name = __package__
def ready(self):
post_migrate.connect(create_test_user)
また、アプリ内のアプリ構成に次の参照を追加しますexample_app/__init__.py
。
default_app_config = 'example_app.apps.ExampleAppConfig'
default_app_configは、ここで説明するAppConfig
サブクラスへの文字列Pythonパスです。
syncdb
データ移行を優先して非推奨になりました