我遇到了这个问题,看不到为什么它不起作用。我有这个模型:
class Tweet(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE)
content = models.TextField(validators=[validate_content])
updated = models.DateTimeField(auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.pk)
在将模型的对象称为“ for”的地方:
...
{% for t in object_list %}
<tr>
<td>{{ t.user }}</td>
<td>{{ t.content }}</td>
{% if t.updated == t.timestamp %}
<td>Created: {{ t.updated| timesince }} </td>
{% else %}
<td>Updated: {{ t.updated| timesince }} </td>
{% endif %}
...
如果字段具有相同的内容,我想显示第一条消息,如果刚刚创建了对象,则应该为true,但是显示第二条消息。
我已经在管理面板中检查了字段的内容,并且两者都相同,所以我不知道该怎么办。
答案 0 :(得分:1)
auto_now=True
和auto_now_add=True
各自使用datetime.now()
来获取时间戳,由于它们分别执行,因此它们总是相差一秒,因为它们是分别执行的,因此您的{{ 1}}和updated
字段永远不会相等。
您可以改为使用timestamp
获取两个时间戳之间的时间增量,如果它是timesince
,则实际上可以认为是新创建的:
0 minutes