Estoy tratando de mostrar mis publicaciones para un tiempo específico aquí están mis modelos.py
class Booking(models.Model): check_in = models.DateTimeField(default=timezone.now) check_out = models.DateTimeField(blank=True,null=True)quiero mostrar el objeto durante 12 horas después de la salida, por ejemplo, si tenemos un objeto, su salida es el 14/10/2021 a las 10 a.m. y luego mostrar esa publicación hasta las 10 p.m.
lo probé, pero no funcionó Booking.objects.filter(check_out__hour=12)
es posible por favor gracias de antemano
Puedes filtrar con:
from datetime import timedelta from django.db.models.functions import Now Booking.objects.filter( check_out__gte=Now()-timedelta(hours=12) ) puede filtrar aún más de modo que ningún objeto con una check_out posterior a la actual se filtre con una búsqueda de __range [Django-doc] :
from datetime import timedelta from django.db.models.functions import Now Booking.objects.filter( check_out__range=(Now()-timedelta(hours=12), Now()) ) Here Now() es la marca de tiempo de la base de datos.
También podemos trabajar con la marca de tiempo de la máquina del servidor web con:
from datetime import timedelta from django.utils.timezone import now Booking.objects.filter( check_out__range=(now()-timedelta(hours=12), now()) )