DjangoのaggregateでbooleanがTrueのものを集計したいとき
今回はDjangoのaggregateでbooleanがTrueのものを集計したいときどのように書けば良いのかについてご紹介いたします。
DjangoのaggregateでbooleanがTrueのものを集計したいとき
例として次のtestModelがあったとします。
1 2 |
class testModel(models.Model): testBoolean = models.BooleanField(default=False) |
この中のbooleanフィールドであるtestBooleanがTrueのものの合計を算出したいときがあると思います。
結論から言うと、Sumを使いましょう。
こんな感じです。
1 2 |
from django.db.models import Sum testModel.objects.aggregate(number_of_true=Sum('testBoolean')) |
なぜこれでBoolean型のTrueの数を集計できるかというと、DjangoではBoolean型は内部ではtinyintであるため、Falseの場合は0、Trueの場合は1を持っているからです。
よって、Trueの場合である1を合計していくとそのままboolean型のフィールドがTrueの数になるので、期待した値が取れることとなります。
終わりに
今回はDjangoのaggregateでbooleanがTrueのものを集計したいときどのように書けば良いのかについてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません