簡體   English   中英

當查詢參數值不存在時,Django-filter 被忽略

[英]Django-filter is being ignored when query parameter value is non-existing

出現問題的代碼:

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方法中到達我的斷點

當我嘗試使用不存在的查詢參數值查詢此 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM