У меня сложный запрос, который, хотя он легко выполняется в коде Python, я пытаюсь выполнить с помощью Django Querysets.
Используя примеры моделей из https://docs.djangoproject.com/en/2.2/topics/db/aggregation/#aggregating-annotations,, я пытаюсь аннотировать каждого издателя средним значением общих продаж на автора.Однако общий объем продаж на одного автора должен включать в себя только книги с заданным диапазоном дат.
Есть ли способ сделать это в одном запросе?Конечно, можно сделать два отдельных запроса и объединить результаты, используя чистый Python.Тем не менее, в моем конкретном случае использования существует большое количество накладных расходов для каждого подключения / отключения базы данных, поэтому было бы предпочтительно объединить их в один запрос.Кроме того, реальный набор данных довольно велик, поэтому очень важно выполнить агрегирование на стороне сервера.
Вот пример вывода json, который я ожидал бы:
{
"publishers": [{
"name": "testpublisher",
"avg_recent_sales": "11.2"
}, {
"name": "anotherpublisher",
"avg_recent_sales": "2.4"
}]
}
Где avg_recent_sales
- это среднее количество книг, проданных каждым автором через этого издателя за последние 6 месяцев.