Как отфильтровать сообщения за определенный час от времени их публикации
Я пытаюсь показать свои сообщения за определенное время вот мой 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())
)