注:從版本1.7 syncdb
命令deprecated。使用migrate
instead。
另外Django 1.7引入了AppConfig作爲定製應用程序初始化過程的手段。
因此,因爲Django 1.7實現你想要的最簡單的方法是使用AppConfig
的子類。
讓說,你碰巧有自己example_app
被添加到您的INSTALLED_APPS
,你想創建和管理用戶與管理密碼,只要你從頭開始運行./manage.py migrate
。我還假設自動管理用戶創建僅在dev環境中需要 - 不在生產中。
下面的代碼添加到example_app/config.py
# example_app/config.py
from django.apps import AppConfig
from django.conf import settings
from django.contrib.auth.management.commands import createsuperuser
from django.db.models import signals
from django.contrib.auth.models import User
USERNAME = "admin"
PASSWORD = "admin"
class ExampleAppConfig(AppConfig):
name = __package__
def ready(self):
if not settings.DEBUG:
return
from django.contrib.auth import models as auth_models
def create_testuser(**kwargs):
User = auth_models.User
manager = User.objects
try:
manager.get(username=USERNAME)
except User.DoesNotExist:
manager.create_superuser(USERNAME, '[email protected]', PASSWORD)
# Prevent interactive question about wanting a superuser created
signals.post_migrate.disconnect(createsuperuser, sender=auth_models,
dispatch_uid='django.contrib.auth.management.create_superuser')
signals.post_migrate.connect(create_testuser, sender=auth_models,
dispatch_uid='common.models.create_testuser')
另外添加以下參照應用配置內部應用程式example_app/__init__.py
:
# example_app/__init__.py
default_app_config = 'example_app.config.ExampleAppConfig'
凡default_app_config是一個字符串的Python路徑AppConfig
子類作爲提到here。
'syncdb'已被棄用,有利於數據遷移 – Sdra 2017-01-02 15:10:16