首页 > 解决方案 > Django:满足条件时更新模型中的字段

问题描述

我有一个如下所示的 Post 模型。当过期的时间戳小于现在的时间戳时,我希望状态从 Live 更改为 Expired 但是满足条件时代码似乎没有更新。我该如何更改它才能更新

class Post(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=60)
    topic = models.CharField(choices=TOPIC_CHOICES, max_length=60)
    content = models.TextField(max_length=1500)
    likes = models.ManyToManyField(User, related_name="posts_likes", blank=True, through=PostLike)
    dislikes = models.ManyToManyField(User, related_name="post_dislikes", blank=True, through=PostDislike)
    # comments = models.CharField(max_length=240, null=True, blank=True)
    created_timestamp = models.DateTimeField(default=now, editable=False)
    expired_timestamp = models.DateTimeField(default=expiration_time, editable=False)
    status = models.CharField(max_length=60, default="Live")

    def save(self, *args, **kwargs):
        if now >= self.expired_timestamp:
            self.status = "Expired"
        super(Post, self).save(*args, **kwargs)

标签: djangodjango-rest-framework

解决方案


我认为您应该键入 date.today() 或 datetime.datetime.now() 而不是“现在”。让我知道它是否有效

import datetime
def save(self, *args, **kwargs):
        if date.today() >= self.expired_timestamp:
            self.status = "Expired"
        super(Post, self).save(*args, **kwargs)

推荐阅读