Django迁移未迁移authtoken和会话

时间:2019-08-19 14:46:28

标签: python django django-rest-framework django-migrations

运行python manage.py migrate时,并非所有迁移都运行,特别是django_celery_resultsauthtokensessions。这导致与应用程序相关的迁移出错。

The terminal output looks like so:

但是,如果我先手动迁移这三个,然后专门迁移auth(不知道为什么我需要再次迁移它),然后再进行python manage.py migrate,它将起作用。

enter image description here

在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将运行“要执行的操作”中列出的所有迁移。

1 个答案:

答案 0 :(得分:1)

您的api_app.0002迁移将创建一个用户而未设置last_login。因此,此迁移必须在允许该列为空的auth 0005迁移之后运行。

如果在迁移中添加dependency,则Django将以正确的顺序运行它们。

class Migration(migrations.Migration):

    dependencies = [('auth', '0005_alter_user_last_login_null')]