Отфильтрованные аннотации без удаления результатов
Рассмотрим модель и запрос с использованием аннотаций, например, следующий пример из документации Django: http://docs.djangoproject.com/en/dev/topics/db/aggregation/
Publisher.objects.filter(book__rating__gt=3.0).annotate(num_books=Count('book'))
Результат этого запроса будет содержать только объекты, соответствующие фильтру (т. Е. Имеет book_rating больше 3,0), и эти объекты были аннотированы. Но что, если я хочу, чтобы запрос содержал все объекты, но только комментировал объекты, которые соответствуют фильтру (или, например, отмечал их 0)? Или это вообще возможно?
1 ответ
Нет, вы не можете этого сделать - потому что это не то, как работает базовый SQL.
Единственное, о чем я могу думать, - это сделать два запроса, один с фильтром / аннотацией, а другой без, затем выполнить итерацию по ним в Python, добавив аннотацию к соответствующим объектам из нефильтрованного списка.