我有一个模型,我想知道是否可以设置一个触发模型字段更改的条件。例如,我有一个模型
class BillboardTracker(models.Model):
client_name = models.CharField(max_length=400)
entry_date = models.DateTimeField(default=datetime.now)
duration = models.PositiveIntegerField()
expiry_date = models.DateField()
is_expired = models.BooleanField(default=False)
我想知道是否有可能在模型中有一个函数,当到期日到的时候,is_expired等于True。我试过了
^{pr2}$但它不起作用。这有可能实现吗?在
你需要对这个函数做两个改变, 首先使用日期时间。现在()其次
您可能需要这样更新您的逻辑:
因为有时两个值可能不完全相同,但对于所有以前的日期,BillboardTrackerneed is_expired=True。在
在你看来:
^{pr2}$使用@属性
这里最简单的事情就是根本没有is expired字段!不需要。你需要的是房产。在
请记住,数据库中没有字段,如果该字段与另一个具有简单计算的字段相同。这会自动消除你的头痛,因为你必须将项目标记为过期。在
如果你想知道一个对象是否已经过期。在
^{pr2}$过滤
如果您想检索一组过期的对象
这就是为什么我提到你不需要存储一个容易计算的字段。在
指数优势
在大多数RDBMS中,布尔字段(例如您的is_expired列)不能有效地索引。所以这实际上意味着,如果您在expiry\u date字段上创建索引,那么上面的查询将比对布尔字段的查询快。在
相关问题 更多 >
编程相关推荐