Как мне получить 1 день до timezone.now()

У меня есть кнопка, которая должна появиться за 1 день до начала start_date объекта модели. На мой взгляд, у меня есть функция, которая сообщает мне, является ли объект start_date или end_date сейчас.

    def has_engagement(self):
        from rental.models import Inquiry
        inquiries = Inquiry.objects.filter(inquiryequipment__equipment=self).filter(start_date__lte= timezone.now()).\
            filter(end_date__gte=timezone.now()).filter(status="CO")
        if not inquiries:
            return False
            # no current confirmed engagement
        else:
            return True
            # there is a current confirmed engagement

вместо этого мне нужно проверить, сегодня ли день за день до даты начала или окончания. Есть идеи? Спасибо

1 ответ

Решение

Вы можете использовать timedelta, как показано ниже:

previous = timezone.now() - timedelta(1)  # returns date object of previous day
next = timezone.now() + timedelta(1)  # returns date object of next day
Inquiry.objects.filter(start_date__lte=previous, end_date__gte=next, status="CO", inquiryequipment__equipment=self)

Обратите внимание, что вы можете фильтровать набор запросов и запросы, используя запятую

with out date formate

previous = timezone.now() - timedelta(1)  # returns date object of previous day
next = timezone.now() + timedelta(1)  # returns date object of next day
Inquiry.objects.filter(start_date__lte=previous, end_date__gte=next, status="CO", inquiryequipment__equipment=self)

with date formate

previous = (timezone.now() - timedelta(1)).strftime('%Y-%d-%m')  # returns date object of previous day
next = (timezone.now() + timedelta(1)).strftime('%Y-%d-%m')  # returns date object of next day
Inquiry.objects.filter(start_date__lte=previous, end_date__gte=next, status="CO", inquiryequipment__equipment=self)
Другие вопросы по тегам