根据this最近的问题,我将需要以UTC格式存储所有datetime
个对象,因此我需要使用自定义库在存储之前正确翻译它们。有没有办法可以对即将保存和/或更新的对象进行操作,以便将datetime
对象转换为UTC?我希望这对我如何使用Django非常透明,所以如果它是这些类型的字段中的任何一个:
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
event_time = models.DateTimeField()
......我想在幕后'翻译',以便不必手动执行以下操作:
new_instance.created = translate(now)
new_instance.modified = translate(now)
new_instance.event_time = translate(event_time)
在所有DateTimeField
字段上手动执行此操作非常麻烦。 Django有办法做到这一点吗?在Hibernate中,我要么使用AOP,要么使用Interceptor
来执行此操作。
答案 0 :(得分:1)
答案 1 :(得分:1)
如何设置TIME_ZONE?
要回答标题上的问题,您可以覆盖模型上的保存方法:
def save(self):
# do stuff before save
super(YourModel, self).save()
# do stuff after save
如果您想通知其他人某些事件(例如预存和后保存),请使用django signals
答案 2 :(得分:0)
嗯,如果我理解正确的话,我认为一个好的方法就是创建一个自定义的DateTimeField
。为此,你应该继承DateTimeField
并覆盖一些方法(to_python,pre_save等,这取决于你的具体需求)。
查看documentation了解详情。