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

Django3执行migrate时报'str'对象无_meta属性问题求助

错误原因

该AttributeError: 'str' object has no attribute '_meta'报错的核心是Django在处理多对多字段的自定义中间表时,尝试读取中间表模型的_meta属性,但此时拿到的是未解析的字符串值而非模型类,导致属性不存在。结合你提供的迁移文件,有两个明确的触发点:

  1. 迁移依赖顺序错误:你在用户模型中添加指定through='account.Contact'的多对多字段的迁移,排在了创建Contact模型的迁移之前。Django先执行加字段的迁移时,Contact模型还未注册,through参数的字符串无法被解析为模型类。
  2. 拼写错误:当前迁移的依赖项中写的是('account', '0005_contant'),contant为拼写错误,正确应为contact,会导致Django找不到正确的前置迁移,模型加载顺序混乱。

解决步骤

  • 先删除account应用migrations目录下所有序号≥0005的迁移文件,注意不要删除目录下的__init__.py文件。
  • 检查models.py代码:
    确认Contact模型定义正确,同时确认用户模型的多对多字段的through参数拼写正确,示例写法参考:
    following = models.ManyToManyField('self', through='Contact', related_name='followers', symmetrical=False)
    
  • 确认生产配置文件educa/settings/pro.py中已经正确注册account应用,且AUTH_USER_MODEL配置无误。
  • 重新生成迁移文件:
    python manage.py makemigrations --settings=educa.settings.pro
    
  • 重新执行迁移:
    python manage.py migrate --settings=educa.settings.pro
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:06:04