Использовать диапазон дат в фильтре запросов - PullRequest
0 голосов
/ 15 октября 2019

У меня есть HTML-форма, которая возвращает мне две даты в таком формате: 2019-10-15. Когда я проверил тип () возвращаемой даты, получилось «str»

, как я могу использовать эту строку в моем запросе Django?

Код:

start = request.POST['from']
end = request.POST['to']

foo = bar.objects.filter(dispatch_date = ??)

Ответы [ 3 ]

2 голосов
/ 15 октября 2019

Вы можете использовать диапазон для фильтрации по дате

. Вы можете преобразовать строку в дату, используя parse_date , например,

from django.utils.dateparse import parse_date
start = request.POST['from']
start_date = parse_date(start)

end = request.POST['to']
end_date = parse_date(end)


foo = bar.objects.filter(date__range=(start_date,end_date))

parse_date функция вернет None, если заданная дата не в формате %Y-%m-%d, поэтому в этом случае вы можете преобразовать в дату, как эта

start = request.POST['from']
start_date = datetime.datetime.strptime(start, "%Y-%m-%d").date()
1 голос
/ 15 октября 2019

VIEWS.PY

   def date_page(request): 
    f_date = request.GET.get("f_date")
    t_date = request.GET.get("t_date")


    date_queryset = Add.objects.filter(date__range=(f_date, t_date))
    for i in date_queryset:
        print (i.budget, i.date)

    return render (request , 'date_page.html',{'date_queryset':date_queryset})

HTML

    <form method="GET"> {% csrf_token %}

FROM  : <input type="date" name="f_date"> <br>  <br>  

            TO    :  <input type="date" name="t_date"> <br>  <br>  <hr>


    <input type="submit"> <br> <br>

    </form>
0 голосов
/ 15 октября 2019

Вы должны преобразовать дату в требуемом формате в соответствии с моделью, например:

start = request.POST['from']
end = request.POST['to']

start_date = datetime.strptime(start, "%Y-%m-%d %H:%M:%S.%f")

end_date = datetime.strptime(end, "%Y-%m-%d %H:%M:%S.%f")

foo = bar.objects.filter(date__range=[start_date, end_date])

"%Y-%m-%d %H:%M:%S.%f - это формат, который необходимо обновить в соответствии с вашей моделью, как вы определили поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...