У меня довольно простая задача отфильтровать модели, используя совокупное значение, например:
class A(models.Model):
title = models.CharField()
address = models.CharField()
page_count = models.IntegerField()
Теперь мне нужно выбрать все A
заголовки, которые имеют сумму page_count
, равную дляПример 2 для того же адреса.Было бы легко, если бы мне не понадобился заголовок:
A.objects.all().values('address').annotate(pages=Sum(page_count)).filter(pages=2)
Но что, если мне нужно для каждой "строки" выбрать все A
, которые "включены" в эту строку.
Например, у нас есть три модели:
A(title='X', 'address'='aa', page_count=1)
A(title='Z', 'address'='aa', page_count=1)
A(title='Y', 'address'='bb', page_count=1)
Я хочу отображать только те заголовки, в которых суммарное количество страниц равно 2 (то есть 'X' и 'Z'), сгруппированных по адресу.
Возможно ли это в одном запросе?prefetch_related
может быть?