当前位置: 首页 > 面试题库 >

Django / Postgres:在RangeField上聚合

饶元章
2023-03-14
问题内容

是否有可能执行聚合功能DjangoRangeField

假设我们有3个对象BigIntegerField price_range

第一个目标: price_range = [10,5000]

第二个obj: price_range = [1,5000]

第3个目标: price_range = [100,9000]

这三个对象的结果MaxMin汇总将是:

min = 1max = 9000

我试图聚集MaxMin这种方式:

MyModel.objects.aggregate(Min('price_range'),Max('price_range'),)

这引起了错误:

ProgrammingError:函数min(int8range)不存在第1行:SELECT MIN(“ app_mymodel”。“
price_range”)AS“ price_range__min” FROM“ app …


问题答案:

您可以获取与域范围Upper(..)Lower(..)这样:

from django.db.models.functions import **Upper, Lower**

MyModel.objects.aggregate(Min( **Lower(** 'price_range' **)** ), Max( **Upper(** 'price_range' **)** ))

但是请注意,如果范围不重叠(例如[0, 20][50, 100]),您仍然会得到range [0, 100]

from django.db.models.functions import Upper, Lower

MyModel.objects.aggregate(
    **low=** Min(Lower('price_range')),
    **high=** Max(Upper('price_range'))
)


 类似资料:
  • 我正试图在Docker上用Nginx、uWSGI和Postgres安装一个Django应用程序。我找到了一本关于为Django和Postgres设置Compose的优秀指南:https://docs.docker.com/v1.5/compose/django/ 但是,现在我需要添加Nginx和uWSGI。我试过使用这个回购协议的文件(https://github.com/baxeico/djan

  • 我正在尝试更新我的docker映像从Python:3.8.2-alpine3.10切换到Python:3.9.0-alpine3.12,但在运行django命令ssl_check_private_key:symbol not found时遇到了一个问题。 运行检查时出现以下错误: bash-c“touch/var/donor_reporting_portal/.touch&&django-admi

  • 问题内容: 我有一个包含多个包含整数(a1,a2,a3等)的字段的postgresql表。 我想一次跨多个列运行汇总函数(均值,标准差等)。(其中一些可能具有合理数量的空值,因此我不想只生成列平均值然后再对它们求平均值)。 我可以得到一组整数 但是我然后无法获取聚合函数以将此作为输入。 谁能给我任何有关如何使它工作的提示? 问题答案: 使用子查询,您可以使用所有行: 您还可以对行进行分组,例如:

  • 问题内容: 我正在使用内置的Django 1.9 和Postgres 9.4。在模型的json字段中,我存储带有一些值(包括数字)的对象。我需要汇总它们以找到最小/最大值。像这样: 另外,提取特定的密钥将很有用: 上面的查询失败了 FieldError:“无法将关键字’my_key’解析为字段。不允许加入’attrs’。” 有可能吗? 笔记: 我知道如何进行简单的Postgres查询来完成这项工作

  • 我正在用Django模板的两个勺子制作一个Django应用程序。得到这个Heroku错误,我的Postgres生产设置关闭了吗? > 操作错误/无法连接到服务器:连接被拒绝服务器是否运行在主机“localhost”(127.0.0.1)上并接受端口5432上的TCP/IP连接? 异常位置: 工头开工良好 procfile: local.py设置: DATABASES={'default':{'en

  • 问题内容: 我正在确定一个包含大型,几乎不可压缩的时间序列数据的项目,并想知道带有原始SQL的Django + Postgres是否合适。 我有每小时约2000个对象/小时的时间序列数据。我每年要存储大约200万行,我想1)能够通过连接分割数据以进行分析,2)能够在Django的服务下进行基本的网络概述工作。我认为最好的主意是将Django用于对象本身,但直接使用原始SQL来处理关联的大型时间序列