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

Django添加PhoneNumberField后执行迁移报错AttributeError如何解决?

错误原因

你在Django模型层错误导入了表单专用的PhoneNumberField类。phonenumber_field模块针对模型层、表单层分别提供了不同的字段实现:你在models.py中导入的phonenumber_field.formfields.PhoneNumberField是仅用于表单的字段类,不具备Django模型字段必须的数据库映射、迁移逻辑相关属性(比如报错中提到的is_relation),因此执行迁移操作时会抛出属性不存在的错误。

解决步骤

  • 第一步:修改models.py的导入语句
    将models.py中原有的导入代码:
    from phonenumber_field.formfields import PhoneNumberField
    
    替换为模型层专用的导入:
    from phonenumber_field.modelfields import PhoneNumberField
    
  • 第二步:清理无效迁移文件
    找到对应app下migrations目录中,之前执行makemigrations生成的、未同步到数据库的包含错误字段的迁移文件,直接删除即可。
  • 第三步:重新执行迁移命令
    依次运行以下命令完成数据库同步:
    python manage.py makemigrations
    python manage.py migrate
    

注:你forms.py中导入phonenumber_field.formfields.PhoneNumberField的逻辑是正确的,表单层原本就需要使用表单专用的字段类,无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:15:06