Django 注释添加时间间隔

Naf*_*war 6 python sql django postgresql annotations

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

Model.objects.annotate(
    end_dt=models.ExpressionWrapper(
        models.F('date') + models.F('end'),
        output_field=models.DateTimeField()
    )
)
Run Code Online (Sandbox Code Playgroud)

现在我必须将 1 天添加到end_dt. 我已经用这样的普通 sql 做到了这一点。

SELECT 
       "db_shift"."id",
       (("db_shift"."date" + "db_shift"."end") + INTERVAL '1 day') AS "end_dt"
FROM 
     "db_shift";
Run Code Online (Sandbox Code Playgroud)

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

Naf*_*war 8

经过一些实验后,我发现从 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()
    )
)
Run Code Online (Sandbox Code Playgroud)