【发布时间】:2021-05-21 16:40:54
【问题描述】:
如何使用自记录创建以来的天数计算对表的 Django 查询进行注释?
我想根据优先级组合指标乘以自记录创建以来的天数来订购表格。
为了获得日期注释,我正在尝试这样做:
qs = qs.annotate(days=(ExtractDay(Now()-F('created_datetime'))))
但是,这是抛出错误:
django.db.utils.ProgrammingError: function pg_catalog.timezone(unknown, interval) does not exist
LINE 1: ...EMENT_TIMESTAMP() - "myapp_mymodel"."created_timestamp") AT TIME ZO...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
我尝试过类似的Extract() 函数,但它也会产生类似的错误。
我做错了什么?
从表面上看,我只需要执行 Django 等效的 EXTRACT(DAY FROM NOW() - created_timestamp),但 Django 的 Extract(..., 'days') 和 ExtractDay() 函数似乎与 PostgreSQL 等效函数实际上并不匹配。
看起来 Django 的 Now() 返回的值和我的时间戳字段都是时区感知时间戳,那么为什么数据库会抱怨类型不兼容?
我的数据库后端是 PostgreSQL。
【问题讨论】:
标签: python django django-orm