基準に一致するオブジェクトをカウントし、関連オブジェクトの特性によってグループ化しようとしています。たとえば、次のような一連のモデルがあるとします。
class Office(User):
name = models.CharField(max_length=50)
city = models.CharField(max_length=50)
class Staff(User):
home_office = models.ForeignKey(Office)
class Appointment(models.Model):
appt_start = models.DateTimeField()
appt_end = models.DateTimeField()
client = models.ForeignKey(User)
provider = models.ForeignKey(Staff)
result = models.CharField(max_length=50)
そして、各オフィスの「成功」をもたらした予約の数を取得したかったので、次のような生の SQL クエリを 1 つ実行できます。
SELECT office.name, COUNT(appointment.id)
FROM appointment
JOIN staff ON staff.id = appointment.provider_id
JOIN office ON office.id = staff.home_office_id
WHERE appointment.result = 'success' GROUP BY office.name;
可能であれば、ORM と Django の QuerySet 集計と注釈関数を使用してこの結果を取得したいと思いますが、ドキュメントを読んだ後、関連するオブジェクトのフィールドに基づいて集計することはできないと思いますが、場合によっては質問したかったのです何かを逃した。