Django中滤波逆_集长度的滤波模型
我有模型:Django中滤波逆_集长度的滤波模型,django,Django,我有模型: 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的长度过滤A,用c的值过滤b的集合。现在我有
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的长度过滤A,用c的值过滤b的集合。现在我有:
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
})
看起来很管用!谢谢。但有一个小改动:a.objects.filter(b_u_c_set_ubar=1234).distinct().filter(**{…})
A.objects.filter(b__c__bar=1234).distinct().filter(**{
# My filters
})