У меня есть две модели Product
и ProductFilter
.
ProductFilter
имеет поле priority = IntegerField(...)
и active = BooleanField(...)
.
class ProductFilter(..):
products = ManyToManyField('Product....)
Я хочу отфильтровать продукты с полем active = True
по их ProductFilter
с наивысшим приоритетом.
Я могу выбрать product_filter
с наивысшим приоритетом:
product.filters.all().order_by('priority').last()
Но для этого нужно значение l oop, которое умножает число на queries
.
Is это можно сделать за один Query
? Может быть, как-то aggregate/annotate
product_filter
с наивысшим приоритетом как active_filter
, а затем
Product.objects.annotate(active_filter=Somehow annotate).filter(active_filter__active=True)