utils timezones mexico django django-models timezone timezoneoffset

timezones - timezone django



Django predeterminado=timezone.now+delta (1)

Tratando de establecer una marca de tiempo para una expiración de clave en el modelo de Django y se topó con este problema:

Mi código actual:

key_expires = models.DateTimeField(default=timezone.now() + timezone.timedelta(days=1))

El código anterior funciona, sin embargo, cuando se usa "timezone.now ()", se obtiene la marca de tiempo en el momento en que se reinició Apache, por lo que esto no funciona. Hice algunas investigaciones y encontré la solución para esa parte del problema, así que reemplazando "timezone.now ()" por "timezone.now", obtengo la marca de tiempo actual cada vez que se crea el objeto, que es perfecto , el problema está parcialmente resuelto.

Tengo problemas para cambiar la fecha utilizando "timezone.timedelta (days = 1)".

key_expires = models.DateTimeField(default=timezone.now + timezone.timedelta(days=1))

El error que estoy obteniendo es:

key_expires = models.DateTimeField(default=timezone.now + timezone.timedelta(days=1))

TypeError: tipo (s) de operandos no soportados para +: ''function'' y ''datetime.timedelta''

El objetivo es establecer la marca de tiempo 24 horas antes.

Cualquier ayuda es muy apreciada.


default requiere una llamada, por lo que solo necesita escribir una función para hacer lo que desee y luego proporcionarla como argumento:

def one_day_hence(): return timezone.now() + timezone.timedelta(days=1) class MyModel(models.Model): ... key_expires = models.DateTimeField(default=one_day_hence)