Mjohn
Mjohn

Reputation: 35

Django filter date before deadline

I want to filter the date 5 days before the deadline in Django, I already have a query but not working. How can I solve this?

django views

def bdeadline(request):
        def dispatch(self, *args, **kwargs):
            return super().dispatch(*args, **kwargs)
        dl = books.objects.filter(deadline = datetime.now().date() +timedelta(days=5))
        return  render(request, 'deadline.html',{'title':'Car - Deadline', 'dl':'dl'})

Upvotes: 1

Views: 337

Answers (1)

ruddra
ruddra

Reputation: 51988

There are two potential problems in your code. One is querying DateTimeField with date data. Another is sending string dl as context.

dl = books.objects.filter(deadline = datetime.now().date() +timedelta(days=5))
#                         ^^^^^^^^^ 
return  render(request, 'deadline.html',{'title':'Car - Deadline', 'dl':'dl'})
#                                                                       ^^^^

So, you can fix like this:

def bdeadline(request):
    dl = books.objects.filter(deadline__date = datetime.now().date() + timedelta(days=5))  # consider using PascalCase when naming classes(based on pep 8)
    return  render(request, 'deadline.html',{'title':'Car - Deadline', 'dl':dl})

I am using __date to get only the date data of the database.

Upvotes: 1

Related Questions