Отфильтрованные аннотации без удаления результатов - PullRequest
0 голосов
/ 11 февраля 2011

Рассмотрим модель и запрос с использованием аннотаций, например, следующий пример из документации 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 Ответ

0 голосов
/ 11 февраля 2011

Нет, вы не можете этого сделать - потому что это не так, как работает базовый SQL.

Единственное, о чем я могу думать, - это сделать два запроса, один с фильтром / аннотацией, а другой без, затем выполнить итерацию по ним в Python, добавив аннотацию к соответствующим объектам из нефильтрованного списка.

...