【问题标题】:Django annotate add interval to dateDjango注释添加间隔日期
【发布时间】:2019-10-28 18:37:16
【问题描述】:

我在 Django 2.2 中使用 postgres 数据库。我需要在模型中组合日期和时间字段,并在其中添加一天的间隔。我已经完成了这样的第一部分。

Model.objects.annotate(
    end_dt=models.ExpressionWrapper(
        models.F('date') + models.F('end'),
        output_field=models.DateTimeField()
    )
)

现在我必须在end_dt 中添加 1 天。我已经用这样的普通 sql 完成了这个。

SELECT 
       "db_shift"."id",
       (("db_shift"."date" + "db_shift"."end") + INTERVAL '1 day') AS "end_dt"
FROM 
     "db_shift";

如何使用 django ORM 实现这一点?或者它甚至可以实现?

【问题讨论】:

  • dateend 的字段类型是什么?两者都是DateTimeField 在模型中吗?能展示一下模型的相关部分吗?
  • @JPG dateDateFieldendTimeField

标签: python sql django postgresql annotations


【解决方案1】:

经过一些实验,我发现从 datetime 添加 timedelta 效果很好:)

import datetime


Model.objects.annotate(
    end_dt=models.ExpressionWrapper(
        models.F('date') + models.F('end') + datetime.timedelta(days=1),
        output_field=models.DateTimeField()
    )
)

【讨论】:

    猜你喜欢
    • 2021-02-04
    • 2012-03-18
    • 1970-01-01
    • 2018-12-30
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2019-09-24
    相关资源
    最近更新 更多