5

I have a button that should appear 1 day before the model object's start_date. In my view I have a functions that tells me if the object's start_date or end_date is now.

    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

instead of this, i need to check if today is a day before the start or end dates. Any ideas? Thanks

Gabby Cervantes
  • 85
  • 2
  • 10

2 Answers2

7

you can use timedelta as below:

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)

Note you can filter queryset and queries using comma seperated

Gahan
  • 4,075
  • 4
  • 24
  • 44
2
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)
azhar
  • 351
  • 3
  • 13