Как отфильтровать сообщения за определенный час от времени их публикации

Я пытаюсь показать свои сообщения за определенное время вот мой models.py

class Booking(models.Model):
    check_in = models.DateTimeField(default=timezone.now)
    check_out = models.DateTimeField(blank=True,null=True)

я хочу отображать объект в течение 12 часов после выезда, например, если у нас есть объект, его выезд 14/10/2021 10AM, то покажите этот пост до 10PM

я пробовал, но не получилось Booking.objects.filter(check_out__hour=12)

возможно ли это, пожалуйста? Спасибо заранее

Вы можете фильтровать с помощью:

from datetime import timedelta
from django.db.models.functions import Now

Booking.objects.filter(
    check_out__gte=Now()-timedelta(hours=12)
)

вы можете фильтровать дальше так, чтобы не было объектов с check_out более поздней датой, чем сейчас, с помощью поиска __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())
)

Здесь Now() - временная метка базы данных.

Мы также можем работать с меткой времени машины веб-сервера с:

from datetime import timedelta
from django.utils.timezone import now

Booking.objects.filter(
    check_out__range=(now()-timedelta(hours=12), now())
)
Вернуться на верх