在Django中对布尔字段设置日期

2 投票
1 回答
1558 浏览
提问于 2025-04-18 16:39

我刚接触pythondjango,正在用django开发一个网站。我给用户提供了一个上传内容的选项。

不过,这些内容只有在管理员批准后才能在网站上显示。为了进行批准,我在我的模型中添加了一个布尔字段,就像这样:

Class content(models.Model):

    content_name = models.CharField(max_length = 100)
    content = models.ImageField(upload_to = 'photos', blank=False,null=True)
    approved = models.BooleanField(default = False)
    uploaded_time = models.DateTimeField()

现在,每当用户上传内容时,这些内容首先会存储在数据库中,默认情况下,批准字段保持为False,也就是说,这些内容正在等待管理员的批准。

如果管理员批准了这些内容,那么它们就可以在网站上显示。一切都进行得很顺利。但我想记录批准的时间

请记住,管理员可以在内容存储到数据库后批准或点击布尔字段。现在我的问题是,如何在管理员批准内容时跟踪批准的时间呢?

1 个回答

1

你可以用一个简单的方法来解决这个问题。给你的模型添加两个字段,一个叫 created,另一个叫 modified。这样,每当用户添加内容时,created 字段就会记录下内容创建的时间;而当管理员批准这个内容时,modified 字段就会记录下批准的时间。

你可以用下面的代码来设置你的模型:

from django.db import models

class TimeStampedModel(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

class content(TimeStampedModel):
    content_name = models.CharField(max_length = 100)
    content = models.ImageField(upload_to = 'photos', blank=False,null=True)
    approved = models.BooleanField(default = False)

其实,你可以把这个做法扩展到所有模型上,这样就能跟踪每个字段是什么时候被创建和修改的。只需要在你的模型类中扩展 TimeStampedModel 模型就可以了。

撰写回答