【发布时间】:2016-05-03 16:35:47
【问题描述】:
我正在创建一个应用,其中“Episode”对象具有“air_time”和“air_status”字段。
class Episode(models.Model):
air_time = models.DateTimeField()
air_status = models.TextField(default="UPCOMING")
# air_status can contain UPCOMING, LIVE or VOD in the original code
我想根据“air_time”字段更新“air_status”字段。 我应该在应用程序的哪个位置处理和更新“air_status”字段?我在想两个选择:
- 根据视图中的对象请求,视图 将更新“air_status”字段。缺点是如果对象从未加载,则字段“air_status”不会在数据库中更新。
- 以某种方式检查模型文件以在当前时间等于“air_time”时更新“air_status”。
我知道如何执行选项 1,但不知道选项 2。最好的解决方案是什么?谢谢!
【问题讨论】:
-
不要在数据库中存储逻辑,而是查询它的数据
-
您的意思是删除“air_status”字段并在视图中找出它以将其传递给模板?这样做的问题是,我无法在所有对象上制作三个类别“VOD”、“LIVE”和“UPCOMING”。
-
是的。通过它的声音,可以根据 air_time 确定状态(可能也需要持续时间)
-
因此,如果我想获得已经播出的分页器中的所有剧集,我需要做这样的事情(?): Episode.objects.all.filter(air_time__lt=datetime.日期时间.now())。我担心这会占用大量资源,但我可能会选择这个选项。
标签: python mysql django database