[英]Django-filter is being ignored when query parameter value is non-existing
Code where problem occurs:出现问题的代码:
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
Lets say in my Game.RELEASE_CHOICES
, one of my options is "2", this means this query is working for me http://localhost:8000/games/?release=2假设在我的Game.RELEASE_CHOICES
中,我的选项之一是“2”,这意味着此查询对我有用 http://localhost:8000/games/?release=2
In this case I can reach my breakpoint in release_filter
method.在这种情况下,我可以在release_filter
方法中到达我的断点。
BUT但
When I try to query this URL with non existing query parameter value当我尝试使用不存在的查询参数值查询此 URL 时
http://localhost:8000/games/?release=2156 http://localhost:8000/games/?release=2156
The release_filter
is not being executed, cant reach breakpoint at all and all I get in return is: release_filter
没有被执行,根本无法到达断点,我得到的回报是:
{
"count": 0,
"results": [],
"page_size": 20
}
What I would like to achieve is the filter being executed despite of non existing query parameter value.我想要实现的是,尽管查询参数值不存在,但过滤器仍在执行。 Is it possible?可能吗? Thank you for all possible answers.感谢您提供所有可能的答案。
You can try this:你可以试试这个:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.