django模板中的DateTime比较

mas*_*iny 4 django

我在比较Django模板中的两个日期时遇到了问题.

我的模型中有一个日期字段:

 date_created = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

我想比较date_created到今天的日期.所以这就是我在django模板中所做的事情:

{% if x.for_meeting.date_created < today%} # (x is the instance of MeetingRecord class where for_meeting field is Foreign key to Meeting table Where date_created)
Run Code Online (Sandbox Code Playgroud)

现在我正在计算今天的视图:

today =  datetime.now().strftime("%B %d, %Y,%I:%M %P")
Run Code Online (Sandbox Code Playgroud)

不幸的是我无法比较日期.

请告诉我,我在这里做错了什么.

cat*_*ine 9

today =  datetime.now()

{% if x.for_meeting.date_created.date < today.date and x.for_meeting.date_created.time < today.time  %}
Run Code Online (Sandbox Code Playgroud)


Jan*_*nne 7

您不必创建 today 变量(在视图中),只需使用已经可用的 {% now %} 模板标记。

并且,在比较 Django 模板中的 DateTimeField 对象时,请确保在相同的时区中比较它们。为了清晰起见并与时区更改兼容,您可能希望明确说明这一点:

{% load tz %}

{% if date_created|utc < now|utc %}
Run Code Online (Sandbox Code Playgroud)

如果 dead_deadline 为 None 或 => 比当前日期时间,则计算结果为 False。

默认情况下(对我而言),date_created 在数据库时间 (UTC) 中,现在在 settings.py 中设置的本地时间。

还要确保您比较的值具有有意义的值。

附注。如果您尝试使用 localtime 过滤器将格式为“自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来的秒数”的日期时间对象转换为日期:“U”,则输出将为 None。


iHT*_*boy 5

{% if date_created|date:"YmdHis" < now|date:"YmdHis" %}

{% endif %}
Run Code Online (Sandbox Code Playgroud)