Django不在数据库(Postgres)中保存UTC时间戳



在设置中。我有:

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)

相关内容

  • 没有找到相关文章

最新更新