自动更新字段的最佳做法是什么?

时间:2019-06-03 07:36:13

标签: python django

这就是我要完成的工作:我的模型中有一个“ age”字段,我希望它的值是直到现在的持续时间-我的意思是现在是实时的,而不仅仅是obj创建时间或更新时间。

起初,我想知道django中是否存在某种动态字段,该字段值将仅基于公式进行更新。但是后来我发现这是不现实的,必须在某个时间点对其进行更新。

现在我想到的是编写一个模型方法来计算值并将其分配给字段,并在每次查询类对象之前手动调用它并将新值写入字段。< / p>

我想知道有没有更好的方法可以完成此操作,因为我的方法会给数据库增加一些负担,而这也许是不必要的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

这确实是错误的方法。您应该在数据库中存储一个静态值,即确切地是创建时间或更新时间,然后在需要时通过Python方法得出年龄。例如:

class MyModel(models.Model):
    updated_at = models.DateTimeField(auto_now=True)

    @property
    def age(self):
        return (datetime.datetime.now() - self.updated_at).seconds   # or whatever units

答案 1 :(得分:3)

您永远不会将这样的事情写到数据库中,而是存储生日/出生日期,然后根据需要计算出年龄。

此计算所涉及的额外时间非常短,以致它很可能永远不会成为代码中的性能问题。