Python 基于过期日期时间在Django上使用getter和setter
我正在尝试制作一个自动化系统,当到期日期(和时间)到达时修改模型的值。它是Django1.9,在Python3上运行 我不确定是否正确应用了getter/setter属性 以下是我正在做的:Python 基于过期日期时间在Django上使用getter和setter,python,django,Python,Django,我正在尝试制作一个自动化系统,当到期日期(和时间)到达时修改模型的值。它是Django1.9,在Python3上运行 我不确定是否正确应用了getter/setter属性 以下是我正在做的: from django.db import models from django.utils.timezone import now, localtime from datetime import * class Post(models.Model): created_at = models.Da
from django.db import models
from django.utils.timezone import now, localtime
from datetime import *
class Post(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
_state = (
('1', 'active'),
('2', 'inactive'),
)
state = models.CharField(max_length=20, choices=state, default='active')
duration = models.DurationField(blank=True, null=True)
expires = models.DateTimeField(blank=True, null=True)
updated_at = models.DateTimeField(auto_now=True)
@property
def state(self):
return self.expires > localtime(now())
@state.setter
def state(self):
if active() == False:
return self._state = 2
def save(self, *args, **kwargs):
self.created_at = localtime(now())
self.expires = self.created_at + self.duration
return super(Post, self).save(*args, **kwargs)
我使用下划线来定义默认值。
问题是到时候没有任何变化,我不知道如何调试它
我有两个问题:
- 是否可以使用任何工具来调试
- 这是使用getter和setter的正确方法吗?(我认为这很难让它发挥作用)
如果你知道这是怎么回事,请让我知道这没有多大意义,你只需在类上编写一些函数,并期望模型在时间到来时自动更新?所以你希望你的模型在保存时将自己标记为过期,对吗?这对我来说也没有意义。但我真的很迷茫,另一个用户告诉我,这实际上是可行的,因为你可以重写模型上的值。你需要一个外部“看门狗”,它会在某个时间表上触发模型的状态检查。如果每分钟一次对您来说足够精确,您可以编写一个管理命令,并从crontab调用它。我认为您误解了别人告诉您的内容。另一个用户可能正在谈论一个state属性,当访问该属性时,它返回时间是否已过期。但这只是一个表象,它不会为您更新数据库。