Django фильтр даты до крайнего срока - PullRequest
1 голос
/ 31 марта 2020

Я хочу отфильтровать дату за 5 дней до крайнего срока в Django, у меня уже есть запрос, но он не работает. Как я могу решить это?

django просмотров

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'})

Ответы [ 2 ]

1 голос
/ 31 марта 2020

В вашем коде есть две потенциальные проблемы. Один из них запрашивает DateTimeField с данными даты. Другой отправляет строку dl в качестве контекста.

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

Итак, вы можете исправить это так:

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})

Я использую __date, чтобы получить только данные даты базы данных.

0 голосов
/ 31 марта 2020

Как то так?

five_days_before = datetime.now() - timedelta(days=5)
books.objects.filter(deadline__gte=five_days_before)
...