Я пытаюсь считать объекты, которые соответствуют критерию и группе, характеристикой связанного объекта. Например, если у меня есть множество моделей, как это:Агрегация фильтрованных связанных объектов
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 запрос следующим образом:
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;
Я бы предпочел, чтобы получить этот результат, используя ОРМ и QuerySet агрегации & аннотаций функции Джанго, если это возможно, но после прочтения документации, и я не думаю, что это можно агрегировать на основе полей соответствующего объекта, но Я хотел спросить, если бы я что-то пропустил.