Saltar al contenido

Problemas de fecha y hora de Django (predeterminado = datetime.now ())

Solución:

parece que datetime.now() se evalúa cuando se define el modelo y no cada vez que agrega un registro.

Django tiene una función para lograr lo que ya estás intentando hacer:

date = models.DateTimeField(auto_now_add=True, blank=True)

o

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

La diferencia entre el segundo ejemplo y lo que tiene actualmente es la falta de paréntesis. Pasando datetime.now sin los paréntesis, está pasando la función real, que se llamará cada vez que se agregue un registro. Si lo pasas datetime.now(), entonces solo está evaluando la función y pasándole el valor de retorno.

Hay más información disponible en la referencia de campo del modelo de Django.

En lugar de usar datetime.now realmente deberías estar usando from django.utils.timezone import now

Referencia:

  • Documentación para django.utils.timezone.now

así que ve por algo como esto:

from django.utils.timezone import now


created_date = models.DateTimeField(default=now, editable=False)

De la documentación en el campo predeterminado del modelo django:

El valor predeterminado para el campo. Puede ser un valor o un objeto invocable. Si es invocable, se llamará cada vez que se cree un nuevo objeto.

Por lo tanto, lo siguiente debería funcionar:

date = models.DateTimeField(default=datetime.now,blank=True)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *