Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django 1.8条件表达式返回空queryset_Python_Django_Django Models - Fatal编程技术网

Python Django 1.8条件表达式返回空queryset

Python Django 1.8条件表达式返回空queryset,python,django,django-models,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对象的计数,这些对象的已完成为true 不幸的是,我被困在Django 1.8中,所以我不能选择Count('bar',filt

我有两个类似的模型:

class Foo(models.Model):
    # fields...

class Bar(models.Model):
    foo = models.ForeignKey(Foo)
    is_done = models.BooleanField()
    # more fields....
我想在
Foo
上加上所有相关
Bar
对象的计数,这些对象的
已完成
为true

不幸的是,我被困在Django 1.8中,所以我不能选择
Count('bar',filter='bar'u'u'u'u done

因此,我使用了条件聚合:

Foo.objects.all().annotate(
    # other fields...
    done=Count(Case(
        When(bar__is_done=True, then=1),
        output_field=IntegerField()
    ))
)
不幸的是,这将返回一个空查询集。删除条件返回一个正常的查询集,但最后一个注释似乎破坏了查询


出什么问题了?

如果你被一个Django发行版卡住了,它在一年多前进行了最后一次安全更新,那么你应该处理非常低的内部网流量,并在
foo.bar\u set.filter(is\u done=True)
或类似的东西上循环。如果您实际上是在一个可以访问internet的地方托管此文件,那么这绝对不是您应该首先解决的问题。如果您在Django发行版上遇到了一年多前的最后一次安全更新,那么您应该处理非常低的内部网流量,并通过
foo.bar\u set.filter(is\u done=True)进行循环
或类似内容不应成为问题。如果你真的在一个互联网可以访问的地方托管,这绝对不是你应该首先解决的问题。