Django - 获取相关对象

时间:2017-10-12 11:55:32

标签: django-models django-rest-framework django-related-manager

我有3个模型(比方说A,B,C)。型号 C 具有 A B 作为外键。现在我有 A 的primary_key,我想检索相关的 B 对象列表。

我希望 B 的整个对象不仅仅是我可以使用values()或values_list()获取的字段。我的模型如下:

class A(models.Model):
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=200)

class B(models.Model):
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=200)

class C(models.Model):
    name = models.CharField(max_length=200)
    roll_number = models.IntegerField(default=0)
    a = models.ForeignKey(A,related_name='c_a')
    b = models.ForeignKey(A,related_name='c_b')

1 个答案:

答案 0 :(得分:0)

您可以稍微修改一下来自@Piyush S. Wanare的答案:

c.objects.filter(a=primary_key_a).values('b')

或者,如果您只想要一个只包含b个对象的列表,则可以使用values_list()

c.objects.filter(a=primary_key_a).values_list('b', flat=True)

这会给你一个b的平面列表(在这种情况下)。 values返回字典,values_list类似,但输出是元组列表而不是字典。附加选项flat=True(如果只检索一个字段,则有效)返回对象的平面列表,而不是对象元组列表。

供参考的文件: