我有模特:
class A(models.Model):
b = models.ForeignKey(B)
class B(models.Model):
pass
class C(models.Model):
b = models.ForeignKey(B)
bar = models.IntegerField() # Or any other field
class C(models.Model):
我需要按照C.bar的值过滤的b的c_set的长度来过滤A.现在我有:
for a in A.objects.all():
if len(a.b.c_set.filter(bar=1234)) == 0:
continue
# Code for needed 'a'
如何过滤' A'只有一个数据库请求?我有其他过滤器用于' A'我需要将它们与新的结合起来。像这样:
A.objects.annotate(newfilter=Count(b__c_set__bar=1234)).filter(**{
'newfilter__gt': 0,
# My filters
})
答案 0 :(得分:0)
A.objects.filter(b__c__bar=1234).distinct().filter(**{
# My filters
})