不带时区的Django查询注释

不带时区的Django查询注释,django,postgresql,timezone,annotate,Django,Postgresql,Timezone,Annotate,我尝试使用Django的查询对象编写以下查询: all_proposals2 = Proposal.objects.raw( "select *, vote_score/extract('epoch' from age(created)) as display_rank from proposals_proposal") 这就是我想到的: all_proposals = Proposal.objects.annotate( display_rank=F('vote_score') /

我尝试使用Django的查询对象编写以下查询:

all_proposals2 = Proposal.objects.raw(
"select *, vote_score/extract('epoch' from age(created)) as display_rank from proposals_proposal")
这就是我想到的:

all_proposals = Proposal.objects.annotate(
    display_rank=F('vote_score') / Extract(Func(F('created'), function='AGE'), 'epoch'),
)
但它会生成以下查询:

SELECT
   "proposals_proposal"."id",
   ...
   ("proposals_proposal"."vote_score" / 
      EXTRACT('epoch' FROM AGE("proposals_proposal"."created") AT TIME ZONE 'America/Los_Angeles')) AS "display_rank" 
FROM
   "proposals_proposal" 
ORDER BY
   "proposals_proposal"."created" ASC
这不是有效的查询。Postgres给出了以下错误:

HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
但是它非常接近正确,除了在
AGE()
函数调用后附加了时区“America/Los_Angeles”的
。如何更改查询以使其不具有此时区规范?

在查看了应用此时区规则的方法后,我意识到我必须使用general
Func
编写此提取调用

    all_proposals = Proposal.objects.annotate(
        display_rank=ExpressionWrapper(F('vote_score') / Func(
            Func(F('created'), function='AGE'),
            function='EXTRACT',
            template='%(function)s(epoch from %(expressions)s)',
        ), output_field=FloatField()),
    )

这绕过了任何自动时区规范。

您是否尝试过
使用\u TZ=False
?设置
使用\u TZ=False
可以修复查询,但我希望时区位于所有其他相关位置。在这个查询中,它将时区应用于一个不应该有时区的间隔。