Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 使用相关名称两次_Django - Fatal编程技术网

Django 使用相关名称两次

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返回一个对象

假设我有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
返回一个对象管理器(而不是对象本身),因此不能以相同的方式使用它。例如,
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