私は次のモデルを持っています:
class Foo(models.Model):
pass
class Bar(models.Model):
foo = models.ForeignKey(Foo)
is_successful = models.BooleanField()
オブジェクトに関連付けられているすべてfoo
のオブジェクトがbar
foo
is_successful
True
これまでのところ、私のクエリセットは次のとおりです。
foos = Foo.objects.all().annotate(all_successful=Min('bar__is_successful'))
注釈の考え方は、すべての行all_successful
の最小値が 1 の場合、すべてのis_successful
行が 1 でなければならないということです( isおよびisとTrue
仮定)。したがって、クエリセットを次のように使用できることを知っています。0
False
1
True
foo = foos[0]
if foo.all_successful == 1:
print 'All bars are successful'
else:
print 'Not all bars are successful'
これは sqlite ではうまく機能しますが、PostgreSQLMIN
ではブール列に対して集計を実行できないため失敗します。sqliteはブール値を整数として扱い、集計を実行できるため、これはsqliteで機能すると思います。
is_successful
私の質問は、フィールドを に変換せずに、このクエリセットを PostgreSQL で機能させるにはどうすればよいかということIntegerField
です。
ありがとう