with now datetimefield current django datetime django-models

now - django import datetime



¿Puedo establecer una hora predeterminada específica para un campo de fecha y hora de Django? (5)

¿Algo como esto?

import datetime dt = datetime.now() dt.hour = 22 dt.minute = 0 dt.second = 0

Difícil ser más específico sin contexto.

Tengo un modelo para eventos que casi siempre comienzan a las 10:00 pm, pero en ocasiones pueden comenzar más temprano / más tarde. Para facilitar las cosas en el administrador, me gustaría, por el momento, predeterminar a las 10 pm, pero ser modificable si es necesario; la fecha deberá establecerse independientemente, por lo que no necesita un valor predeterminado, pero lo ideal sería que se establezca de forma predeterminada a la fecha actual.

Me doy cuenta de que puedo usar datetime.now para lograr esto último, pero ¿es posible (y cómo) establecer la hora en un valor predeterminado específico?

Actualización: estoy obteniendo respuestas más rápido de lo que puedo averiguar cuál (es) hace lo que estoy tratando de lograr ... Probablemente debería haber ido más lejos junto con la aplicación antes de preguntar. ¡Gracias por la ayuda mientras tanto!



en caso de que esté interesado en establecer un valor predeterminado para TimeField : https://code.djangoproject.com/ticket/6754

no

start = models.TimeField(default=''20:00'')

en lugar de hacer

import datetime start = models.TimeField(default=datetime.time(16, 00))


datetime.time(16, 00) no funciona.

Use datetime.time(datetime.now()) en su lugar si está tratando de obtener la hora actual o datetime.time(your_date_time)

Donde your_date_time = datetime.datetime objeto


De los documentos de Django para Field.default :

El valor predeterminado para el campo. Esto puede ser un valor o un objeto llamable. Si se puede llamar, se llamará cada vez que se cree un nuevo objeto.

Así que haz esto:

from datetime import datetime, timedelta def default_start_time(): now = datetime.now() start = now.replace(hour=22, minute=0, second=0, microsecond=0) return start if start > now else start + timedelta(days=1) class Something(models.Model): timestamp = models.DateTimeField(default=default_start_time)