Проблема с функцией __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 в строки.

Другие вопросы по тегам