通过外键快速获取与2个其他对象相关的对象的查询集

时间:2019-01-10 17:18:44

标签: django django-orm

这是我的模特:

class A(models.Model):
  #Some fields

class B(models.Model):
  #Some fields

class C(models.Model):
  a = models.ForeignKey(A)
  b = models.ForeignKey(B)
  #Some more fields

  class Meta:
     unique_together = ['a', 'b']
  

现在基于A的某个对象(例如'a'),我想要C.a ='a'和C.b ='b'的所有'b'的集合。
  换句话说,获取a.c_set

中存在条目的B对象集。

目前我的操作方式是:

qset_c = C.objects.filter(a='a')    
qset_b = [c.b for c in qset_c]

首先,这给了我一个列表(首选查询集)。
其次,我担心第2行具有列表理解功能,因为海量数据可能要花费很多时间。

有没有更好的方法来实现这一目标?

注意:我了解,声明有点不清楚。如果有人可以对其进行编辑以使其更清晰,那么它将很有帮助

1 个答案:

答案 0 :(得分:1)

这会做什么?

set_c = C.objects.filter(a=a).values_list('b', flat=True)