注:バージョン1.7syncdb
コマンドは非推奨であるため。migrate
代わりに使用してください。
また、Django 1.7では、アプリケーションの初期化プロセスをカスタマイズする手段としてAppConfigが導入されました。
したがって、Django 1.7以降、必要なことを実現する最も簡単な方法は、AppConfig
のサブクラスを使用することです。
たとえば、自分example_app
に追加された独自のユーザーがあり、最初から実行するときはいつでも、管理者パスワードを使用してユーザーを作成および管理INSTALLED_APPS
したいとします。また、自動管理ユーザーの作成は、本番環境ではなく、開発環境でのみ必要であると想定しています。./manage.py migrate
次のコードをに追加しますexample_app/apps.py
# 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
。
# example_app/__init__.py
default_app_config = 'example_app.apps.ExampleAppConfig'
default_app_configは、ここでAppConfig
説明するサブクラスへの文字列Pythonパスです。