注:从版本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