我使用注释计算了一个变量,现在我想将其与现有字段进行比较。那么我该怎么做呢?
models.py
class Book(models.Model):
name = models.CharField(max_length=50)
price = models.IntegerField()
查询看起来像这样
aggregate_query = {
"max-price": (
aggregate(Avg('price'))
)
}
input_queryset = Books.objects.annotate(**aggregate_query)
所以现在我想改进查询来过滤那些价格低于最大值且高于平均值的书籍的数据。
最佳答案
from django.db.models import Max
max_price = Book.objects.all().aggregate(Max('price'))
您获得最高价格。
from django.db.models import Avg
average = Book.objects.all().aggregate(Avg('price'))
现在,您已获得最高价格和平均价格。
Book.objects.filter(price__lte = max_price,price__gte=average)
或
from django.db.models import Q
Book.objects.filter(Q(price__lte=max_price),Q(price__gte=average))
<强> For reference use this link
谢谢!!!
关于python - 比较表中的字段和 django-orm 中的计算字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70574744/