我有以下型号:
class Foo(models.Model):
    pass
class Bar(models.Model):
    foo = models.ForeignKey(Foo)
    is_successful = models.BooleanField()
如果与对象关联的所有对象都具有,我想获取foo带有注释的所有对象barfoois_successfulTrue
到目前为止,我的查询集是:
foos = Foo.objects.all().annotate(all_successful=Min('bar__is_successful'))
注释的想法all_successful是,如果所有行的最小值is_successful为 1,那么它们都必须是True(假设0isFalse和1is True)。所以知道我可以像这样使用查询集:
foo = foos[0]
if foo.all_successful == 1:
    print 'All bars are successful'
else:
    print 'Not all bars are successful'
这在 sqlite 中效果很好,但是在 PostgreSQL 中失败了,因为 PostgreSQL 无法MIN在布尔列上执行聚合。我猜这在 sqlite 中有效,因为 sqlite 将布尔值视为整数,因此它可以执行聚合。
我的问题是如何在不将我的is_successful字段转换为 PostgreSQL 的情况下使这个查询集在 PostgreSQL 中工作IntegerField?
谢谢