#python #django
#python #django
Вопрос:
Как мне использовать этот подзапрос в Django ORM?
select id, name, price from book
where price > (select avg(price) from book);
Я попробовал это и получил ошибку.
Book.objects.filter(price__gt=Subquery(Book.objects.aggregate(Avg('price')))).values('id', 'name', 'price')
AttributeError: 'dict' object has no attribute 'query'
Комментарии:
Ответ №1:
Используйте аннотированное выражение вместе с фильтром как,
from django.db import models
Book.objects
.annotate(avg_price=models.Avg('price'))
.filter(price__gt=models.F('avg_price'))