简体   繁体   English

当查询参数值不存在时,Django-filter 被忽略

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM