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 № 1Você 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)