Django 1.8条件表达式返回空查询集

时间:2019-06-28 14:31:01

标签: python django django-models

我有两个类似这样的模型:

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()
    ))
)

不幸的是,这将返回一个空的查询集。删除条件将正常返回查询集,但是特别是最后一个注释似乎中断了查询。

怎么了?

0 个答案:

没有答案