Django 超级用户夹具错误 - 没有这样的 table: auth_user
Django superuser fixture error - no such table: auth_user
我想在 Django 的 syncdb
中为超级用户创建定义一个固定的用户名和密码(在它被执行之后)。我在下面使用的方法适用于旧版本的 Django(我猜是 1.6),但现在不起作用。
我有这个夹具文件 initial_data.json
:
[
{
"fields": {
"username": "me",
"first_name": "",
"last_name": "",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"last_login": null,
"groups": [],
"user_permissions": [],
"password": "pbkdf2_sha256$...",
"email": "a@a.co",
"date_joined": "2015-04-23T01:13:43.233Z"
},
"model": "auth.user",
"pk": 1
}
]
当我在 settings.INSTALLED_APPS
中添加时:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'my_app',
)
和运行 python manage.py syncdb
,我得到以下错误:
django.db.utils.OperationalError: Problem installing fixture 'path/initial_data.json': Could not load auth.User(pk=1): no such table: auth_user
我该怎么办?
我可以更改夹具加载的顺序以确保在加载此夹具之前创建 auth_user
table 吗?
或者在 Django 中自动创建超级用户的任何其他方式?
提前致谢。
我解决了我的问题,但这绝对不是最好的解决方案。
我看到当我 运行 heroku run python manage.py syncdb
时,我得到以下内容
Operations to perform:
Synchronize unmigrated apps: myproject, permissions, myapp1, myapp2
Apply all migrations: auth, flatpages, admin, contenttypes, sessions, sites
Synchronizing apps without migrations:
Creating tables...
Creating table app1_model1
Creating table app1_model2
...
所以我想如果我以相反的顺序迁移包含的应用程序会怎样:
heroku run python manage.py migrate sites; heroku run python manage.py migrate sessions; heroku run python manage.py migrate contenttypes; heroku run python manage.py migrate admin; heroku run python manage.py migrate flatpages; heroku run python manage.py migrate auth;
成功了!我不知道为什么,但确实如此。也许这也会对其他人有所帮助。
我想在 Django 的 syncdb
中为超级用户创建定义一个固定的用户名和密码(在它被执行之后)。我在下面使用的方法适用于旧版本的 Django(我猜是 1.6),但现在不起作用。
我有这个夹具文件 initial_data.json
:
[
{
"fields": {
"username": "me",
"first_name": "",
"last_name": "",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"last_login": null,
"groups": [],
"user_permissions": [],
"password": "pbkdf2_sha256$...",
"email": "a@a.co",
"date_joined": "2015-04-23T01:13:43.233Z"
},
"model": "auth.user",
"pk": 1
}
]
当我在 settings.INSTALLED_APPS
中添加时:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'my_app',
)
和运行 python manage.py syncdb
,我得到以下错误:
django.db.utils.OperationalError: Problem installing fixture 'path/initial_data.json': Could not load auth.User(pk=1): no such table: auth_user
我该怎么办?
我可以更改夹具加载的顺序以确保在加载此夹具之前创建 auth_user
table 吗?
或者在 Django 中自动创建超级用户的任何其他方式?
提前致谢。
我解决了我的问题,但这绝对不是最好的解决方案。
我看到当我 运行 heroku run python manage.py syncdb
时,我得到以下内容
Operations to perform:
Synchronize unmigrated apps: myproject, permissions, myapp1, myapp2
Apply all migrations: auth, flatpages, admin, contenttypes, sessions, sites
Synchronizing apps without migrations:
Creating tables...
Creating table app1_model1
Creating table app1_model2
...
所以我想如果我以相反的顺序迁移包含的应用程序会怎样:
heroku run python manage.py migrate sites; heroku run python manage.py migrate sessions; heroku run python manage.py migrate contenttypes; heroku run python manage.py migrate admin; heroku run python manage.py migrate flatpages; heroku run python manage.py migrate auth;
成功了!我不知道为什么,但确实如此。也许这也会对其他人有所帮助。