Python 更新帖子时,如何将模板中的“created_at”字段替换为“updated_at”字段?

Python 更新帖子时,如何将模板中的“created_at”字段替换为“updated_at”字段?,python,django,datetime,model,Python,Django,Datetime,Model,我有以下模型,其中分别是在字段中创建的和在字段中更新的: class BlogPost(models.Model): title = models.CharField(max_length=255) content = models.TextField() slug = models.SlugField(blank=True, unique=True) image = models.ImageField(default='default.jpg',upload_t

我有以下模型,其中分别是在字段中创建的和在字段中更新的:

class BlogPost(models.Model):
    title = models.CharField(max_length=255)
    content = models.TextField()
    slug = models.SlugField(blank=True, unique=True)
    image = models.ImageField(default='default.jpg',upload_to='posts/%Y/%m/%d')
    created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
这是我创建帖子的结果:

我希望它只显示
立即发布
文本、当前时间,并且仅当我更新该字段时,它才应显示
立即更新
文本

这是上面模板的html:

<small class="text-secondary">Posted {{ object.created_at|naturaltime }}</small><br>
<small class="text-secondary">Updated {{ object.updated_at|naturaltime }}</small><br>
Posted{{object.created_at | naturaltime}}
更新{{object.Updated_at | naturaltime}}

我不知道是否要更改我的
模型
,或者在我的模板中使用一些
,如果条件
,您能帮我这样做吗?多谢各位

如果您将
updated_设置为空,并且仅在帖子更新时才将其设置为空,那么在
updated_设置为空检查将是确定帖子是否已更新的一种简单可靠的方法

<small class="text-secondary">
    {% if object.updated_at %}
        Updated {{ object.updated_at|naturaltime }}
    {% else %}
        Posted {{ object.created_at|naturaltime }}
    {% endif %}
</small><br>
def updated(self):
    return (self.updated_at - self.created_at) < timedelta(microseconds=100)

我认为您最好在
处将
updated_置零,或者在模型上保留一个
updated
标志,而不是依赖可能在不同平台上不一致的数学。

我认为您可以应用一个简单的检查来查看createdOn和UpdatedOn是否相同,如果相同,则只显示createdOnYes,它像预期的那样工作。非常感谢@skaul05Thank you@kungpu,通过在模型中设置
null=True
,我可以使
updated_在
为空,但是当帖子更新时我该如何设置它呢?你只需手动将其设置为
datetime.now()
。您可以选择在何处执行此操作,但一个简单的方法是注册一个信号,并在出现
id
值时设置
updated\u(这意味着先前已保存模型,因此当前保存操作是由于更新)。