Фильтр данных на основе лучшего времени для посещения места с помощью Django
Привет, ребята, я работаю над проектом на Django! У меня есть bootstrap форма, где пользователи могут заполнить начальную и конечную даты своих поездок. Мне нужно отфильтровать данные, если даты попадают под заданный диапазон месяцев в моей модели Django. Я попытался смоделировать такую модель, но она не фильтрует данные. Кто-нибудь может помочь мне с этим? Код для этого приведен ниже. Ниже приведен код для моих models.py, views.py и tourform.html соответственно!
Например, лучшее время для посещения парка развлечений - лето, поэтому я буду хранить начальный месяц в поле Django модели тура, а конечный месяц - в поле end_month модели. Когда пользователь попытается отправить форму, я вырежу месяц из начальной и конечной дат, введенных пользователем, и мне нужно будет отфильтровать все те места, которые лучше всего посетить в указанные месяцы, основываясь на поле начального и конечного месяца, присутствующем в базе данных.
models.py
start_month_choices=[('1','January'),('2','February'),('3','March'),('4','April'),('5','May'),('6','June'),('7','July'),('8','August'),('9','September'),('10','October'),('11','November'),('12','December')]
end_month_choices=[('1','January'),('2','February'),('3','March'),('4','April'),('5','May'),('6','June'),('7','July'),('8','August'),('9','September'),('10','October'),('11','November'),('12','December')]
start_month=models.CharField(max_length=2,choices=start_month_choices,default='1')
end_month=models.CharField(max_length=2,choices=end_month_choices,default='1')
views.py
if request.method=='POST':
contents=Tour.objects.all()
category1= request.POST['category']
category2=request.POST['place']
start_date=request.POST['startdate']
end_date=request.POST['enddate']
datem_start = datetime.datetime.strptime(start_date, "%Y-%m-%d")
start_month1=datem_start.month
datem_end = datetime.datetime.strptime(end_date, "%Y-%m-%d")
end_month1=datem_end.month
tour_data = Tour.objects.all().filter(category=category1,place=category2,start_month__gte=start_month1,end_month__lte=end_month1).order_by('-rating')
context={
'tour_data':tour_data
}
return render(request,"base/recommendations.html",context)
tourform.html
<div class="mb-4">
<label for="startdate" class="form-label">Start Date</label>
<input type="date" onchange="my_function1()" class="form-control" id="startdate" name="startdate" required />
</div>
<div class="mb-4">
<label for="enddate" class="form-label">End Date</label>
<input type="date" onchange="my_function2()" class="form-control" id="enddate" name="enddate" required />
</div>