2

だから私は試験データを集約しようとしています.データベースは別のサーバーにあるので、データベース呼び出しをできるだけ少なくしようとしています.

私はこのモデルを持っています (対応するテーブルは、それが重要な場合は mySQL データベースにあります):

class Exam(models.Model):
    submitted              = models.BooleanField(default=False)
    score                  = models.DecimalField(default=Decimal(0))

そして、このクエリ:

>>> exam_models.Exam.objects\
...     .using("exam_datebase")\
...     .aggregate(average=Avg("score"),
...                total=Count("submitted"))
{'average': 22.251082, 'total': 231}

私が探しているのは、合格した試験の数も取得する方法です。次のようなものです。

>>> exam_models.Exam.objects\
...     .using("exam_datebase")\
...     .aggregate(average=Avg("score"),
...                total=Count("submitted"))
...                passed=Count("score__gte=80"))
{'average': 22.251082, 'total': 231, 'passed': 42}

を使用して別のクエリを送信できることはわかっています.filter(score__gte=80).count()が、同じ集計で合計数と通過数の両方を取得することを本当に望んでいました。何か案は?

4

1 に答える 1