Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django模板中自定义更新的| timesince_Python_Html_Django - Fatal编程技术网

Python 在django模板中自定义更新的| timesince

Python 在django模板中自定义更新的| timesince,python,html,django,Python,Html,Django,我有一个django模板,它显示上次在数据库中更新元素的时间,如下所示: <small>updated {{ updated|timesince }} ago</small> 此处更新了,是一个上下文变量集,如下所示: if element.updated != element.uploaded: is_updated = True 然而,它总是显示“X分钟前更新的”,即使元素还没有更新。我可能做错了什么 元素的模型: title = models

我有一个django模板,它显示上次在数据库中更新元素的时间,如下所示:

<small>updated {{ updated|timesince }} ago</small>
此处更新了
是一个上下文变量集,如下所示:

if element.updated != element.uploaded:
    is_updated = True
然而,它总是显示“X分钟前更新的”,即使元素还没有更新。我可能做错了什么

元素的模型:

title       = models.CharField(max_length=120)
identifier  = models.SlugField(blank=True, null=True)
category    = models.CharField(max_length=120, default="uncategorized")
description_short = models.CharField(max_length=300, default="none")
description = models.TextField(default="none")
uploaded    = models.DateTimeField(auto_now_add=True)
updated     = models.DateTimeField(auto_now=True)
time        = models.IntegerField()

即使一个实例只创建了一次并且再也没有接触过,两个
auto\u add
auto\u add\u now
DateTimeFields
也可以保留稍微不同的时间戳。如果你在外壳中检查它,你会看到类似的东西:

>>> element.uploaded
datetime.datetime(2018, 1, 4, 14, 7, 37, 542192, tzinfo=<UTC>)
>>> element.updated
datetime.datetime(2018, 1, 4, 14, 7, 37, 542213, tzinfo=<UTC>)
timesince
不支持一分钟以下的时间增量。发件人:

分钟是使用的最小单位,对于将来相对于比较点的任何日期,都将返回“0分钟”

您所能做的就是将额外的信息输入到上下文中:

# view
recent = (element.updated - element.uploaded).seconds < 60

# template
{% if recent %}
     <small>updated just now </small>
 {% else %}
     <small>updated {{ updated|timesince }} ago</small>
 {% endif %}
#查看
最近=(element.updated-element.uploaded)。秒<60
#模板
{%if最近%}
刚刚更新
{%else%}
更新{{更新|时间自}年前
{%endif%}

这适用于更新后的零件。。。但当上次更新到现在的时间少于1分钟时,它仍然显示“0分钟前更新”。。。我该怎么做呢?@BRHSM我在回答中添加了一些建议。
if (element.updated - element.uploaded).microseconds > 500:
    is_updated = True
# view
recent = (element.updated - element.uploaded).seconds < 60

# template
{% if recent %}
     <small>updated just now </small>
 {% else %}
     <small>updated {{ updated|timesince }} ago</small>
 {% endif %}