You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django自定义用户模型迁移错误:admin初始迁移依赖问题

问题

构建使用自定义用户模型的Django应用时,创建初始迁移后执行迁移操作出现依赖错误:

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.0001_initial on database 'default'

项目settings/base.py配置如下:

AUTH_USER_MODEL = 'users.User'

DJANGO_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

THIRD_PARTY_APPS = [
    'rest_framework',
    'django_filters',
    'corsheaders',
    'django_extensions',
    'simple_history',
    'phonenumber_field',
]

LOCAL_APPS = [
     'apps.users.apps.UsersConfig',
    'apps.courses.apps.CoursesConfig',
    'apps.calendar_app.apps.CalendarAppConfig',
]

INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS

已尝试执行python manage.py makemigrations users和python manage.py migrate命令,均出现相同错误。需在不删除数据库的情况下解决该问题。

解决方法

这个错误根源是admin应用的迁移已提前执行,而它依赖的自定义用户模型迁移还未运行,导致依赖链断裂。按以下步骤操作即可解决:

  1. 备份数据库
    操作前务必备份数据库,避免数据丢失。

  2. 清理迁移历史表
    直接操作数据库的django_migrations表,删除admin和auth的已迁移记录:

    • 打开对应数据库的命令行工具(如PostgreSQL用psql,MySQL用mysql)
    • 执行SQL语句:
      DELETE FROM django_migrations WHERE app IN ('admin', 'auth');
      
  3. 重置用户应用迁移文件
    删除apps/users/migrations目录下除__init__.py之外的所有文件,再重新生成用户模型的迁移:

    python manage.py makemigrations users
    
  4. 按依赖顺序执行迁移
    先运行用户模型的迁移,再依次执行auth和admin的迁移:

    python manage.py migrate users
    python manage.py migrate auth
    python manage.py migrate admin
    
  5. 完成剩余应用迁移
    最后执行所有其他应用的迁移:

    python manage.py migrate
    

内容的提问来源于stack exchange,提问作者kemosabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:40:01