Django注释日期间隔

时间:2019-06-14 06:45:02

标签: 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()
    )
)

现在,我必须向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做到这一点?还是可以实现的?

1 个答案:

答案 0 :(得分:0)

经过一些实验,我发现从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()
    )
)