首页 > 解决方案 > 通过外键快速获取与其他 2 个对象相关的对象的查询集

问题描述

这是我的模型:

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 (say 'a') 的某个对象,我想要设置 Ca = 'a' 和 Cb = 'b' 的所有 'b' 。
换句话说,获取 B 的一组对象,其条目存在于 a.c_set

目前我这样做的方式是:

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

首先,这给了我一个列表(最好使用查询集)。
其次,我担心第 2 行有列表理解,因为它可能需要大量时间来处理大量数据。

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

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

标签: djangodjango-orm

解决方案


这会做你想要的吗?

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

推荐阅读