Django 使用相关名称两次
假设我有3个模型,它们是1对多关系,A(1对多)B(1对多)C: 从ModelA实例开始,我可以使用:Django 使用相关名称两次,django,Django,假设我有3个模型,它们是1对多关系,A(1对多)B(1对多)C: 从ModelA实例开始,我可以使用: model_a.re_model_b 获取与ModelB相关的对象。但是从那里我不知道怎么去ModelC。我试过: model_a.re_model_b.re_model_c 以及: 这两种方法似乎都不管用。我不认为有一种方法可以像你所想的那样做到这一点(model\u a.re\u model\u b.re\u model\u c)。由于model_a.re_model_b返回一个对象
model_a.re_model_b
获取与ModelB相关的对象。但是从那里我不知道怎么去ModelC。我试过:
model_a.re_model_b.re_model_c
以及:
这两种方法似乎都不管用。我不认为有一种方法可以像你所想的那样做到这一点(
model\u a.re\u model\u b.re\u model\u c
)。由于model_a.re_model_b
返回一个对象管理器(而不是对象本身),因此不能以相同的方式使用它。例如,obj_a.re_model_b.all()
返回相关ModelB对象的查询集
相反,做
ModelC.objects.filter(model_b_model_a=my_obj_a)
第一个问题,它应该是一对多关系还是你试图创建一对一关系?我不确定它指的是什么,但这里提到的两个关系,从a到b和从b到c都是1对多的。我假设从a到c的隐式关系也是1对多。如果它们是1对多,那么这个结果就不符合预期model\u a.re\u model\u b
是项目的集合,而不是单个项目。看起来您尝试将b转换为C实际上是a转换为C。尝试将model\u b
更改为models.ForeignKey('ModelB',related\u name='re\u model\u C')
model_a.re_model_b.re_model_c
model_a.re_model_b__re_model_c