Django注释添加间隔日期
Posted
技术标签:
【中文标题】Django注释添加间隔日期【英文标题】:Django annotate add interval to date 【发布时间】: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 实现这一点?或者它甚至可以实现?
【问题讨论】:
date
和 end
的字段类型是什么?两者都是DateTimeField
在模型中吗?能展示一下模型的相关部分吗?
@JPG date
是 DateField
和 end
是 TimeField
。
【参考方案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()
)
)
【讨论】:
以上是关于Django注释添加间隔日期的主要内容,如果未能解决你的问题,请参考以下文章
猎豹MFC--DataTimePicker日期时间选择控件CDatatimeCtrl CTime CTimeSpan时间间隔