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

Django执行makemigrations未为authorization应用生成迁移文件问题

问题原因及解决方案

核心原因

你在执行初始迁移之后才配置自定义用户模型,Django的初始迁移会基于默认的auth.User模型生成数据库表,后续修改AUTH_USER_MODEL不会触发新的迁移——因为Django认为auth相关的迁移已经完成,不会主动检测到用户模型的替换。

解决方案(适合新项目,无重要数据)

因为你是新项目,直接重置迁移和数据库即可:

  1. 删除项目根目录下的数据库文件(默认是db.sqlite3)
  2. 进入每个应用的migrations文件夹,删除除了__init__.py之外的所有.py和.pyc文件(包括authorization、auth、admin等默认应用的迁移文件)
  3. 重新生成迁移:
    python3 manage.py makemigrations authorization
    
  4. 执行迁移:
    python3 manage.py migrate
    

额外注意:你的用户模型存在bug

deletedAt字段定义为BooleanField,但soft_delete方法里却赋值为timezone.now()(时间类型),这会导致运行时错误。建议修改为:

# 将原deletedAt字段改为DateTimeField
deletedAt = models.DateTimeField(null=True, blank=True, default=None)

def soft_delete(self):
    self.deletedAt = timezone.now()
    self.save()  # 别忘了添加save()方法,否则不会保存到数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:02:42