Fecha y hora de Django. Campo a hora de Python.

Tengo un modelo Django con Datefield y Timefield separados para un evento. ¿Hay alguna forma de convertirlo en un objeto datetime de python para que pueda consultar los próximos eventos con cierta precisión? Actualmente solo recibo las próximas del día siguiente.

modelos.py

event_time = models.TimeField() event_date = models.DateField() 

Básicamente, ¿puedo filtrar con un minuto, o incluso dividir una precisión?

Gracias.

Utilice un DateTimeField lugar (consulte esta sección en la documentación). La conversión a un datetime.datetime es manejada por usted por Django automáticamente.

Un DateField da DateField resultado un objeto datetime.date y un objeto datetime.time . Puede usar replace para combinar estos valores en una date actualizada:

 >>> today = datetime.datetime.today ()
 >>> hoy
 datetime.datetime (2012, 3, 31, 11, 6, 5, 182371)
 >>> tiempo = datetime.time (11, 30)
 >>> today.replace (hour = time.hour, minute = time.minute)
 datetime.datetime (2012, 3, 31, 11, 30, 5, 182371)

Tenga en cuenta que la date resultante tiene 11.30 como hora actual. Tenga en cuenta también que today no se modifica, simplemente calcula una nueva fecha y hora. Como puede ver, ahora tiene que fusionarse porque ambos valores se almacenan en campos separados. Es por eso que DateTimeField es una opción mucho mejor, si tiene la capacidad de modificar los campos del modelo.

Deberá agregar un nuevo campo como un campo de combinación de fecha y hora. Mejor para el rendimiento.

 event_full_datetime = models.DateTimeField() 

arreglar la base de datos antigua. para shell como este script.

 for obj in YourModel.objects.all(): obj.event_full_datetime = datetime.datetime( obj.event_date.year,obj.event_date.month, obj.event_date.day, obj.event_time.hour, obj.event_time.minut, obj.event_time.second) obj.save()