简体   繁体   English

Django注释日期间隔

[英]Django annotate add interval to date

I am using postgres database with Django 2.2. 我在Django 2.2中使用postgres数据库。 I need to combine date and time field in model and add an interval of one day in it. 我需要在模型中组合日期和时间字段,并在其中添加一天的间隔。 I have done first part like this. 我已经完成了这样的第一部分。

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

Now I have to add 1 day to end_dt . 现在我必须将1天添加到end_dt I have done this with plain sql like this. 我已经用普通的sql做到了这一点。

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

How can I achieve this using django ORM? 如何使用django ORM做到这一点? Or is it even achievable? 还是可以实现的?

After a bit of experimentation I have found that adding timedelta from datetime works just fine :) 经过一番试验,我发现从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()
    )
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM