Фильтр данных на основе лучшего времени для посещения места с помощью 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>
Вернуться на верх