Django-фильтр игнорируется, когда значение параметра запроса не существует
Код, в котором возникает проблема:
class GameFilter(FilterSet):
release = MultipleChoiceFilter(choices=Game.RELEASE_CHOICES, method='release_filter', widget=CSVWidget, required=True)
def release_filter(self, queryset, name, releases):
if releases:
...
return queryset
Допустим, в моем Game.RELEASE_CHOICES
, один из моих вариантов - "2", это означает, что этот запрос работает для меня
http://localhost:8000/games/?release=2
В этом случае я могу достичь точки останова в release_filter
методе.
BUT
Когда я пытаюсь запросить этот URL с несуществующим значением параметра запроса
http://localhost:8000/games/?release=2156
release_filter
не выполняется, вообще не может достичь точки останова и все, что я получаю в ответ, это:
{
"count": 0,
"results": [],
"page_size": 20
}
Хотелось бы добиться того, чтобы фильтр выполнялся, несмотря на несуществующее значение параметра запроса. Возможно ли это? Спасибо за все возможные ответы.
Вы можете попробовать следующее:
releases = request.GET.get('release',None)
# if using DRF
# releases = request.query_params.get('release',None)
if releases and releases in dict(Game.RELEASE_CHOICES).keys():
...
return queryset