我有两个类似这样的模型:
class Foo(models.Model):
# fields...
class Bar(models.Model):
foo = models.ForeignKey(Foo)
is_done = models.BooleanField()
# more fields....
我想用Foo
为真的所有关联Bar
对象的数量来注释is_done
。
不幸的是,我被困在Django 1.8中,所以Count('bar', filter='bar__is_done
)对我来说不是一个选择。
因此,我改用了条件聚合:
Foo.objects.all().annotate(
# other fields...
done=Count(Case(
When(bar__is_done=True, then=1),
output_field=IntegerField()
))
)
不幸的是,这将返回一个空的查询集。删除条件将正常返回查询集,但是特别是最后一个注释似乎中断了查询。
怎么了?