运行python manage.py migrate
时,并非所有迁移都运行,特别是django_celery_results
,authtoken
和sessions
。这导致与应用程序相关的迁移出错。
但是,如果我先手动迁移这三个,然后专门迁移auth
(不知道为什么我需要再次迁移它),然后再进行python manage.py migrate
,它将起作用。
在Django上安装的应用如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'django_celery_results',
'celery.contrib.testing.tasks',
'api_app'
]
我想知道为什么会这样,我以为migrate
将运行“要执行的操作”中列出的所有迁移。
答案 0 :(得分:1)
您的api_app.0002
迁移将创建一个用户而未设置last_login
。因此,此迁移必须在允许该列为空的auth 0005迁移之后运行。
如果在迁移中添加dependency,则Django将以正确的顺序运行它们。
class Migration(migrations.Migration):
dependencies = [('auth', '0005_alter_user_last_login_null')]