1

我有 3 个模型(比如说 A、B、C)。模型C具有AB作为外键。现在我有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')
4

1 回答 1

1

您可以像这样稍微修改@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(如果仅检索一个字段则有效)返回对象的平面列表,而不是对象元组的列表。

供参考的文档:

于 2017-10-12T13:42:05.477 回答