Следующая проблема:
У меня есть группы продуктов, содержащие продукты. Эти продукты могут быть видны во внешнем интерфейсе или нет. Я определяю их видимость с помощью метода frontend()
(который содержит фильтр) следующим образом:
product_groups.first().products.frontend()
Теперь я хочу определить, хочу ли я разместить ссылку на группу продуктовна главной странице, только если в нем четыре или более товаров.
С аннотациями я бы сделал:
product_groups.annotate(num_products=Count('products')).filter(num_products__gte=4)
Но это дает мне причину подсчета все продукты , а не количество продуктов, видимых во внешнем интерфейсе.
Итак, как мне добавить дополнительный фильтр frontend()
в мой запрос? Чтобы было ясно, я хочу, чтобы Count()
не на 'products'
, а на products.frontend()
.
Редактировать:
Это не дубликат предлагаемого вопроса. Если бы функция фильтра frontend()
была достаточно простой, чтобы вынуть фильтр и вставить его в агрегатную функцию, предложенный вопрос ответил бы на мою проблему.
Моя frontend()
функция довольно сложна и представляет собой совокупность несколькихдругие функции фильтра. Поэтому я действительно хотел бы использовать функцию frontend()
.
Редактировать:
Это должно работать в Django 1.8.