Django3.2中OneToOneField的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
相关产品推荐
相关产品推荐

