Django:“;自动“现在添加”为“真”;给出错误的时间
我希望在Django数据库中创建记录时自动记录当前时间 在我的模型中,我使用:Django:“;自动“现在添加”为“真”;给出错误的时间,django,timezone,Django,Timezone,我希望在Django数据库中创建记录时自动记录当前时间 在我的模型中,我使用: dateTime = models.DateTimeField(auto_now_add=True) 根据我的理解,考虑到正确的时区,这会自动标记时间。 然而,这输出的时间比我的本地时间提前了5个小时 因此,为了尝试并调试此功能,我在视图中运行了此函数并打印了输出: from django.utils import timezone timeNow = timezone.localtime(timezone.no
dateTime = models.DateTimeField(auto_now_add=True)
根据我的理解,考虑到正确的时区,这会自动标记时间。
然而,这输出的时间比我的本地时间提前了5个小时
因此,为了尝试并调试此功能,我在视图中运行了此函数并打印了输出:
from django.utils import timezone
timeNow = timezone.localtime(timezone.now())
timeNow将输出正确的时间
因此,我将我的模型改为:
def get_time():
return timezone.localtime(timezone.now())
dateTime = models.DateTimeField(default = get_time)
这仍然会导致相同的错误时间戳
我还更改了我的settings.py中的时区
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Canada/Central'
USE_I18N = True
USE_L10N = True
USE_TZ = True
你知道我遗漏了什么吗
根据我的理解,考虑到正确的时区,这会自动标记时间
那是个误会。见本报告第一句:
启用时区支持后,Django在数据库中以UTC格式存储日期时间信息,在内部使用时区感知的日期时间对象,并以模板和表单将其转换为最终用户的时区
如您所见,UTC日期时间可以转换为您想要显示的任何内容,等等。在settings.py文件中
将USE_TZ值保持为False
使用_TZ=False
这对我很有效。**在模型导入日期时间中 在settings.py中,将USE_TZ更改为False** 语言代码='en us' 时区='UTC' 使用_I18N=True 使用\u L10N=True
USE_TZ=FalseDatetime在存储时从连接的时区转换为UTC,然后在检索时返回连接的时区。不要这样做。请参见此处的第一项:。总结:Q:我不需要多个时区。我应该启用时区支持吗?A:是的。启用时区支持后,Django将使用更精确的本地时间模型。这将保护您免受夏令时(DST)转换期间出现的微妙且不可复制的错误的影响。