django - 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)
解决方案
我认为您应该键入 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)
推荐阅读
- jquery - JQuery 自动调整文本区域的大小
- python - 如何在 python 中使用 Matplotlib.animation.FuncAnimation 类一次为两条线设置动画?
- javascript - 选择时未应用悬停伪类,即使选择禁用时也是如此
- java - 使用 BST 的 Java 递归
- regex - 正则表达式程序查找带有空格和反斜杠的数字
- ruby-on-rails - 用于复制对象的 Rails 按钮
- c++ - 在脚本调用的 C++ 函数中调用 QJSEngine::newQObject() 是否有效?
- makefile - 制定运行规则,但目标比 prereq 更新
- django - 键必须是 str、int、float、bool 或 None,而不是 builtin_function_or_method
- python - 如何计算一个实体与另一个实体一起出现的次数