python - 比较表中的字段和 django-orm 中的计算字段

标签 python django django-models django-views django-orm

我使用注释计算了一个变量,现在我想将其与现有字段进行比较。那么我该怎么做呢?

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/

相关文章:

python - 如何将 Python 与不同的 SOCKS 5 代理一起使用?

javascript - Django模板: get dictionary's value based on the key that equals to certain tag's value

django - 使用 Django Rest Framework 时,我应该如何构造带有副作用的请求?

django如何创建字段相关字段

mysql - 如何暂时禁用 MySQL 中的外键约束?

python - 使用 matplotlib 创建超过 20 种独特的图例颜色

python - PNG 文件的签名无效

python - Zebra 打印机忽略该命令

python - Django 2.0 国际化 | i18n_patterns 不起作用

python - 保留在设置 python 测试期间创建的项目