我可以将DateTimeFields与标签“ if”进行比较吗?

时间:2018-10-03 03:54:25

标签: python django

我遇到了这个问题,看不到为什么它不起作用。我有这个模型:

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,但是显示第二条消息。

我已经在管理面板中检查了字段的内容,并且两者都相同,所以我不知道该怎么办。

1 个答案:

答案 0 :(得分:1)

auto_now=Trueauto_now_add=True各自使用datetime.now()来获取时间戳,由于它们分别执行,因此它们总是相差一秒,因为它们是分别执行的,因此您的{{ 1}}和updated字段永远不会相等。

您可以改为使用timestamp获取两个时间戳之间的时间增量,如果它是timesince,则实际上可以认为是新创建的:

0 minutes