You need to enable JavaScript to run this app. Django3.2.4生成迁移报错:module 'django.db.models' has no attribute 'RESTRICT'
优惠活动
大模型
产品
解决方案
定价
更多

Django3.2.4生成迁移报错:module 'django.db.models' has no attribute 'RESTRICT'

报错原因
  • 核心原因是models.RESTRICT是Django 3.1版本才正式加入的内置外键约束选项,低于该版本的Django没有对应属性,会抛出找不到属性的报错。
  • 即便你标注本地安装的是Django 3.2.4,大概率是当前项目运行的实际Django版本低于3.1:常见场景包括未激活项目对应的虚拟环境、全局安装的低版本Django优先级高于虚拟环境、多Python版本共存导致调用了其他版本下的低版本Django。
  • 小概率场景为导入错误:模型文件中导入的models不是官方的django.db.models,而是自定义的同名模块,覆盖了官方模块导致找不到对应属性。
解决方法
  • 首先确认当前执行命令的环境Django版本,运行如下命令:
    python -m django --version
    
    如果输出版本低于3.1,直接升级当前环境的Django到对应版本即可:
    pip install --upgrade django==3.2.4
    
  • 若确认版本确实为3.2.4,检查模型文件开头的导入语句,确保导入语句为from django.db import models,没有导入本地自定义的同名models模块。
  • 临时兼容方案:如果暂时无法升级Django版本,可以使用PROTECT替代RESTRICT,二者功能几乎一致,仅事务内错误抛出的时机有细微差异,绝大多数业务场景下表现完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 08:15:10