使用 Django Rest Framework 进行过滤和搜索

Mat*_*ias 1 python django rest django-rest-framework

我正在做我的第一个 DRF 项目,想知道是否可以使用 来DjangoFilterBackend过滤特定字段并同时使用搜索过滤器。所以请求看起来像这样:

http://localhost:8000/api/v1/test/?search=test&id=27&author=2672

是否可以这样做DjangoFilterBackend或者我必须编写自己的过滤器逻辑?

如果您需要有关项目本身或我的代码的更多信息,请告诉我:)

小智 8

是的,这是可能的。

例子:

from rest_framework import filters
from django_filters.rest_framework import DjangoFilterBackend

class ProductViewset(viewsets.ModelViewSet):       
    queryset = Product.objects.all()
    
    filter_backends = [DjangoFilterBackend, filters.SearchFilter]
    filterset_fields = ["is_discontinued",]
    search_fields = ["name", "description",]
Run Code Online (Sandbox Code Playgroud)

filterset_fields中枚举您想要过滤的字段。并在您要搜索的search_fields中。

网址:

https://www.myurl.ltd/api/products?is_discontinued=False&search=laptop
Run Code Online (Sandbox Code Playgroud)

更多信息: DjangoFilterBackendSearchFilter