/ / Django non salva il timestamp nel database UTC (Postgres) - django, postgresql, fuso orario, modelli

Django non salva il timestamp nel database di UTC (Postgres) - django, postgresql, fuso orario, modelli

in settings.py ho:

USE_TZ = True
TIME_ZONE = "UTC"

e in model.py:

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

localtime è impostato in base al fuso orario dell'utente utilizzando un middleware e in questo caso è "Europa / Roma" (quindi +0200).

Quando creo una nuova istanza di gioco usando l'admin di Django, creation_timestamp viene automaticamente impostato su 2014-04-11 12:46:59+02 all'interno del modulo di input visualizzato all'interno della pagina, ma quando salvo e controllo il database che ottengo 2014-04-11 12:46:59+02 che non è quello che mi aspetto dal momento che, secondo la documentazione, Django dovrebbe trasmettere tutti i timestamp all'UTC prima di salvare. (Controllo i dati del database usando pgAdmin, non l'amministratore di Django).

Ho sbagliato?

risposte:

0 per risposta № 1

È possibile impostare il fuso orario dei parametri del client PostgreSQL su UTC. oppure impostarlo su postgresql.conf, quindi ricaricare o inviare il segnale SIGHUP al pid postmaster. fuso orario usare 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)