簡體   English   中英

如何在 django-rest-framework 中使用 SearchFilter?

[英]how to use SearchFilter in django-rest-framework?

我想用 django-rest-framework 做一個搜索功能
這就是我所做的:
視圖.py:
我補充說:

queryset = Site.objects.all()
serializer_class = SiteSerializer
filter_backends = (filters.SearchFilter,)
search_fields = ('name',)  

但是,當我訪問htttp:127.0.0.1/api/v3/vgroup/?search=bob它給了我這個錯誤:
在此處輸入圖片說明

使用搜索過濾器的正確方法是

class TrainingApiView(BListCreateAPIView):
    authentication_classes = (TokenAuthentication,)
    permission_classes = (IsAdminUser,)
    queryset = Training.objects.all()
    serializer_class = TrainingSerializer

    filter_backends = (OrderingFilter, SearchFilter,)
    search_fields = ["training_type", ]

如果你像上面那樣做,那么你就做對了。 您可能在想為什么我的端點返回所有對象而不是一些過濾的項目? 這是因為您正在郵遞員參數中使用 search_fields 進行嘗試。

例如,就我而言, training_type是我的搜索字段,如果我按如下方式編寫端點(這是錯誤的方式)

{{localhost}}/trainings/?training_type=PREMIUM

這是為 Django API 使用 SearchFilter 的錯誤方法,您將獲得來自queryset所有結果。

正確的方法是使用search而不是search_fields = ["training_type", ]提到的搜索字段

以下是您應該如何以正確的方式嘗試它,它將帶來准確的結果

{{localhost}}/trainings/?search=PREMIUM

簡而言之,搜索字段是嘗試查詢參數的正確關鍵字。

暫無
暫無

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

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