Django: выберите из связанного набора в запросе БД - PullRequest
0 голосов
/ 04 марта 2020

У меня есть две модели 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...