django自动化日期时间字段



你好,我正在开发一个博客应用程序,我有一个模型:

class Post(models.Model):
    title = models.CharField(max_length=255)
    <..>
    is_published = models.BooleanField(default=False)                                  
    time_publish = models.DateTimeField()
    time_edit = models.DateTimeField(auto_now=True)
    time_create = models.DateTimeField(auto_now_add=True)

我想设置,当用户设置is_published=True并且调用.save()时,time_publish将保存当前时间。

问题是我不知道该走哪条路。覆盖.save()或者用信号做什么?我将感谢一些文档链接。

很抱歉,如果它是不准确的,但我不知道这个问题应该怎么命名。

更新:

所以多亏了manji,我制作了这个代码,它可以工作:

def save(self, *args, **kwargs):
    if self.pk is not None:
        orig = Post.objects.get(pk=self.pk)
        if not orig.time_publish and self.is_published:
            self.time_publish = datetime.now() 
        elif not self.is_published:
            self.time_publish = None
    super(Post, self).save(*args, **kwargs)   

最简单的解决方案(与django兼容)是覆盖模型的save方法。

class Post(models.Model):
    ...
    def save(self, *args, **kwargs):
        if self.is_published:
            self.time_publish = datetime.now() # don't forget import datetime
        super(Post, self).save(*args, **kwargs)
        ...

此处的更多信息:覆盖预定义的模型方法

相关内容

  • 没有找到相关文章

最新更新