tengo un modelo que describe un evento como este:Django: recuperar correctamente los datos en la fecha y la hora son mayores que ahora
class Event(models.Model):
date = models.DateField()
time = models.TimeField()
me gustaría recuperar todos los eventos futuros (es decir, la fecha mayor que now.date()
). Sin embargo, si la fecha es hoy, me gustaría recuperar los eventos de hoy con un tiempo mayor que now.time()
.
Esto es lo que estoy haciendo:
events = Event.objects.filter(date__gte=now.date()).filter(time__gte=now.time()).order_by('-date')
donde now = datetime.datetime.now()
Pero esto es un error, porque me da un conjunto vacío si el único evento es mañana y su tiempo es menor que el tiempo actual (por ejemplo, si el evento es mañana a las 09:00 y hoy es a las 19:00)
¿esto es posible en django?
PD: Me gustaría evitar iterar a través del conjunto.
¿Por qué utiliza dos campos separados para guardar la fecha y la hora? ¿Por qué no solo un campo de fecha y hora? De esta manera, simplemente puede consultar un solo campo en lugar de dos. –
@pastylegs suponga que usted decide el día de un evento antes de finalizar el tiempo. Puede establecer la hora a medianoche (u otra) para mostrar que no se conoce la hora, pero puede ser más conveniente tener un campo de tiempo separado y almacenar Ninguno. La desventaja es que hace que las consultas como la operación sean más incómodas. – Alasdair
no pensé en eso - buen punto –