在设置中。我有:
USE_TZ = True
TIME_ZONE = 'UTC'
和型号.py:
class Game(models.Model):
id = models.AutoField(primary_key=True)
creation_timestamp = models.DateTimeField(default=lambda: timezone.localtime(timezone.now()))
本地时间是使用中间件根据用户时区设置的,在这种情况下是"欧洲/罗马"(so+0200)。
当我使用Django管理创建一个新的游戏实例时,在页面内显示的表单输入中,时间戳会自动设置为2014-04-11 12:46:59+02
,但当我保存它和我检查了我得到的数据库2014-04-11 12:46:59+02
,这不是我所期望的,因为根据文档,Django应该在保存之前将所有时间戳强制转换为UTC。(我使用pgAdmin检查数据库数据,而不是Django admin)。
我错了吗?
您可以将PostgreSQL客户端参数时区设置为UTC。或者在postgresql.conf中设置它,然后重新加载或向postmaster pid发送SIGHUP信号。时区使用exp:
digoal=# set timezone='UTC';
SET
digoal=# select now();
now
-------------------------------
2014-04-11 13:53:12.903336+00
(1 row)
digoal=# set timezone='PRC';
SET
digoal=# select now();
now
-------------------------------
2014-04-11 21:53:24.239343+08
(1 row)