我们可以在没有时区的情况下使用django DatetimeField吗?

时间:2016-03-09 06:37:09

标签: python django datetime timezone

建议任何链接。我有很多搜索。我无法得到正确的笔记/教程。

1 个答案:

答案 0 :(得分:11)

当您在设置中设置USE_TZ = True(请参阅USE_TZ以获取更多信息)时,Django会在数据库中以UTC格式存储日期和时间信息,否则它将存储天真的日期时间(没有时区的日期时间) 。

settings.py创建的默认django-admin startproject文件包含USE_TZ = True以方便使用。

因此,您必须在设置中设置USE_TZ = False以避免附加时区。

注意:但是你不能仅为特定字段分离时区,按照上面的建议从所有数据库中分离时区,所以我猜最好使用CharField来存储没有时区的日期。

您可以尝试覆盖默认保存处理程序,并通过为您的模型定义保存方法,将saving项之前的DatetimeField中的时区删除到数据库中:

def save(self, *args, **kwargs):
    self.datetime_field = self.datetime_field.replace(tzinfo=None)
    super(MyModel, self).save(*args, **kwargs)