首页 > 解决方案 > Django 迁移没有迁移 authtoken 和会话

问题描述

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

终端输出如下所示:

但是,如果我首先手动迁移这三个,然后专门迁移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会运行“要执行的操作”中列出的所有迁移。

标签: pythondjangodjango-rest-frameworkdjango-migrations

解决方案


您的api_app.0002迁移无需设置即可创建用户last_login。因此,此迁移必须在允许此列中有空值的 auth 0005 迁移之后运行。

如果您向迁移添加依赖项,那么 Django 将以正确的顺序运行它们。

class Migration(migrations.Migration):

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

推荐阅读