在Django模型中保存time.time()
我想给模型更新加个时间戳。问题是,MySQL的时间戳精度只有1秒,所以如果我用自动添加当前时间的DateTime,这对我来说不够精确。
我考虑使用浮点数字段,每次更新时把它设置为time.time()。这是一个我用QuerySet.update()进行更新的模型。
model MyModel:
last_update = models.FloatField(default=time.time)
然后我会在每次保存之前更新last_update(我所有的调用都通过一个中心位置,所以我可以在创建时明确地做这个),比如说:
m = MyModel(..,last_update=time.time())
或者当我进行批量更新时,
m = MyModel.objects.filter(....).update(last_update_time=time.time())
这种保存浮点数并按它排序的方法有没有什么问题?
为了澄清一下,我知道可以用DateTimeField选项设置auto_now=True,但问题是这给我的精度还是1秒,因为它映射到MySQL中的日期时间字段,而MySQL的精度是1秒(我用的是MySQL 5.5)。
2 个回答
1
from datetime import datetime
class Model(models.Model):
date_created = models.DateTimeField()
date_modified = models.DateTimeField()
def save(self):
if self.date_created == None:
self.date_created = datetime.now()
self.date_modified = datetime.now()
super(Model, self).save()
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。