2

在我的客户模型中,我有两个日期时间字段用于存储创建时间和更新时间。

datetime_created = models.DateTimeField(auto_now_add=True)
datetime_updated = models.DateTimeField(auto_now=True)

当我创建一个客户时,它现在将本地时间存储在数据库中,当我通过 API 获取此客户数据时,它以 gmt 时间返回日期时间。这可以。但我想将 gmt 时间保存在数据库中。我认为将本地时间存储在数据库中并不是一个好习惯。

settings.py 文件中的日期设置为

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

我已经安装了“pip install pytz”模块,我的数据库是 postgresql。

4

2 回答 2

4

最佳做法是将其保存为 UTC 格式。

USE_TZ = True在您的设置中,Django 以 UTC 格式将日期和时间信息存储在数据库中,否则它将存储原始日期时间

于 2017-04-05T13:29:12.623 回答
0

您说得对,最佳做法是将您的日期时间字段保存在 UTC 中,并使用标签在您的视图中pytz或在您的模板中将其转换为您的方便。tz

IE,您可以使用 pytz 将您的日期时间转换为视图中的特定日期时间

import pytz

datetime_with_new_tz = object.created_at.astimezone(pytz.timezone(YOUR_LOCAL_TIMEZONE))`

如果要转换模板中的时区,可以使用tz

{% load tz %}
{{object.created_at|timezone:YOUR_LOCAL_TIMEZONE}}
于 2017-04-05T13:39:07.630 回答