/ / Django não grava o timestamp no UTC dentro do banco de dados (Postgres) - django, postgresql, timezone, models

O Django não grava o timestamp no UTC dentro do banco de dados (Postgres) - django, postgresql, timezone, models

em settings.py eu tenho:

USE_TZ = True
TIME_ZONE = "UTC"

e em model.py:

class Game(models.Model):
id = models.AutoField(primary_key=True)
creation_timestamp = models.DateTimeField(default=lambda: timezone.localtime(timezone.now()))

localtime é definido de acordo com o fuso horário do usuário usando um Middleware e, nesse caso, é "Europa / Roma" (+0200).

Quando eu crio uma nova instância de jogo usando o Django admin creation_timestamp é automaticamente definido como 2014-04-11 12:46:59+02 dentro da entrada do formulário exibida dentro da página, mas quando eu salvar isso e eu verificar o banco de dados recebo 2014-04-11 12:46:59+02 que não é o que eu espero desde então, de acordo com a documentação, o Django deve converter todos os timestamps para UTC antes de salvar. (Eu verifico dados do banco de dados usando o pgAdmin, não o Django admin).

Estou errado?

Respostas:

0 para resposta № 1

Você pode definir o fuso horário do parâmetro do cliente do PostgreSQL como UTC. ou configure-o em postgresql.conf e, em seguida, recarregue ou envie o sinal SIGHUP para o postmaster pid. fuso horário use 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)