Django:“ auto_now_add = True”给出了错误的时间

时间:2018-10-26 17:55:01

标签: django timezone

我希望在Django数据库中创建记录时自动记录当前时间。

在我的模型中,我正在使用:

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

有什么想法我想念的吗?

3 个答案:

答案 0 :(得分:2)

  

据我了解,考虑到正确的时区,这会自动标记时间。

那是个误会。参见timezone documentation的第一句话:

  

启用时区支持后, Django将日期时间信息存储在数据库中的UTC中,在内部使用可识别时区的datetime对象,并将其转换为模板中最终用户的时区。表格。

如您所见,可以将UTC日期时间转换为您想要显示的内容,等等。

答案 1 :(得分:0)

**在模型导入日期时间

在settings.py中将USE_TZ更改为False **

LANGUAGE_CODE ='en-us'

TIME_ZONE ='UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = False

答案 2 :(得分:-1)

在settings.py文件中

保持USE_TZ值为False

USE_TZ = False

这对我有用。