Как запросить данные с параметром datetime month?
У меня есть функция фильтрации для запроса данных на основе месяца. Я использую календарь. Вот мой код :
def ListAll(request):
list_month = list(calendar.month_name)[1:]
list_year = Year.objects.all()
objects = Rental.objects.filter(is_terminate = True).order_by('-created')
year_query = request.GET.get("year")
month_query = request.GET.get("month")
if month_query :
month_number = list(calendar.month_name).index(month_query)
month_number = int(month_number)
objects = Rental.objects.filter(is_terminate=True, created__month=month_number, created__year=year_query).order_by('-created')
context = {
'objects':objects, 'list_month': list_month, 'list_year': list_year
}
return render(request, 'report_rental/all.html', context)
В моей модели поле created: models.DateTimeField(auto_now_add=True)
Моя проблема в том, что я получил пустые данные с помощью запроса, использующего месяц с этим objects = Rental.objects.filter(is_terminate=True, created__month=month_number, created__year=year_query).order_by('-created')
Может ли кто-нибудь помочь мне?
Спасибо
Попробуйте использовать array.tolist() для преобразования массива calendar.month_name в список вместо использования функции list(). Я не думаю, что функция list() преобразует массив в список, как вы ожидаете. Попробуйте print(calendar.month_name) проверить это.
def ListAll(request):
list_month = list(calendar.month_name)[1:]
list_year = Year.objects.all()
objects = Rental.objects.filter(is_terminate = True).order_by('-created')
year_query = request.GET.get("year")
month_query = request.GET.get("month")
if month_query:
month_number = calendar.month_name.tolist().index(month_query)
#month_number = list(calendar.month_name).index(month_query)
month_number = int(month_number)
objects = Rental.objects.filter(is_terminate=True, created__month=month_number, created__year=year_query).order_by('-created')
context = {
'objects':objects, 'list_month': list_month, 'list_year': list_year
}
return render(request, 'report_rental/all.html', context)