Проблема с функцией __range в Django
Что мне нужно сделать, это отфильтровать все объекты продаж из определенной зоны и региона и в диапазоне дат. Итак, я использовал функцию __range в запросе что-то вроде этого
start = start_date.strftime('%d-%b-%y')
end = end_date.strftime('%d-%b-%y')
Sales.objects.filter(zone_code=zone_code_, region_code=region_code_, sales_date__range(start,end))
Все мои даты хранятся в виде символов в моих моделях, поэтому я изменил введенные даты на этот формат с помощью strftime(). Но этот запрос дает мне объекты за пределами указанного диапазона, а иногда и нулевой набор.
1 ответ
__range
не является функцией и не может быть вызвана. Это поиск поля, который необходимо добавить к имени поля модели и передать в качестве ключа аргумента ключевого слова, например, в filter()
функция. Значение должно быть кортежем с начальной и конечной датой диапазона:
Sales.objects.filter(
zone_code=zone_code_,
region_code=region_code_,
sales_date__range=(start, end), # pass the tuple as a kwarg
)
Обратите внимание =
перед (start, end)
кортеж!
Вам не нужно конвертировать start
или же end
в строки.