2010-06-23 9 views
5

Estoy sirviendo una aplicación de Python a través de Django. Dentro de la aplicación, estoy almacenando el clásico campo "created" en unas pocas tablas.Anomalía Datetime.now() - Python

Esto es cómo el campo se ve como dentro de la forma de Django:

created = models.DateTimeField(blank=True, default=datetime.now()) 

Desafortunadamente, datetime.now() no es exacta. De hecho, en la base de datos tengo conjuntos de filas con la misma marca de tiempo.

El valor datetime.now() parece cambiar cada 30-45 minutos.


Mi aplicación Django se sirve en Windows Server 2005 detrás de IIS6.

¡La ayuda sería increíble!

Respuesta

6

porque se llama a datetime.now() cuando su módulo se inicializa y ese valor se usa para el valor predeterminado.

que desea utilizar el auto_now_add=True parameter

created = models.DateTimeField(auto_now_add=True) 

edición: no hay necesidad de 'en blanco' si está configurando la opción automática.

10

Esto es un error común de novato, por desgracia. Tiene llamado el método datetime.now() en la definición; esto significa que el valor predeterminado será el momento en el que se ejecutó la definición, es decir, cuando se inicia el proceso del servidor.

lo necesario para aprobar el exigible en su lugar:

created = models.DateTimeField(blank=True, default=datetime.now) 

es decir, sin los soportes de llamadas.

(O solo use auto_now_add=True).

Cuestiones relacionadas