使用related_name两次

时间:2018-02-27 21:24:33

标签: django

假设我有3个模型,后续1对多关系,A(1到多个)B(1到多个)C:

class ModelA(models.Model):

class ModelB(models.Model):
    model_a = models.ForeignKey('ModelA', related_name='re_model_b')

class ModelC(models.Model):
    model_b = models.ForeignKey('ModelA', related_name='re_model_c')

从我可以使用的ModelA实例开始:

model_a.re_model_b 

获取ModelB相关对象。但是从那里我不知道怎么去ModelC。我试过了:

model_a.re_model_b.re_model_c

model_a.re_model_b__re_model_c

这两种情况似乎都没有。

1 个答案:

答案 0 :(得分:1)

我认为没有办法以你想到的确切形式(model_a.re_model_b.re_model_c)来做到这一点。由于model_a.re_model_b返回对象管理器(而不是对象本身),因此不能以相同的方式使用它。例如,obj_a.re_model_b.all()返回相关ModelB对象的查询集。

相反,做ModelC.objects.filter(model_b__model_a=my_obj_a)可能更有意义。