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

Django3.2中OneToOneField的related_name调用all()报错:对象无该属性

解决related_name查询时找不到all()属性的问题

常见原因及解决方法:

  • 错误:从模型类而非实例访问反向关联
    反向关联的related_name属于模型实例,不是模型类。举个例子:

    class ParentModel(models.Model):
        pass
    
    class ChildModel(models.Model):
        parent = models.ForeignKey(ParentModel, on_delete=models.CASCADE, related_name='children')
    

    错误写法:ParentModel.children.all()
    正确写法:

    parent_instance = ParentModel.objects.get(id=1)
    parent_instance.children.all()
    
  • 错误:设置了related_name='+'禁用反向关联
    如果外键定义里写了related_name='+',Django会关闭该模型的反向查询,自然不存在对应的管理器和all()方法。检查模型代码,把'+'改成你需要的关联名称即可。

  • 错误:拼写related_name名称
    核对查询时的名称和模型外键中related_name的设置是否完全一致,大小写、拼写都不能出错。

  • 错误:未正确迁移模型
    如果修改过related_name的设置,记得运行python manage.py makemigrations和python manage.py migrate,确保数据库和模型定义同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:10:27