如何在Django Rest Framework上将普通Filter和SearchFilter一起使用?

我正在使用DRF(Django Rest Framework)。

我声明了一个ModelViewSet,现在我想在上面添加过滤器。

class GoodsViewSet(viewsets.ModelViewSet):
    class Filter(FilterSet):    
        class Meta:
            model = m.Goods

    filter_class = Filter
    filter_backends = (SearchFilter, Filter)
    search_fields = ['name',]
    queryset = m.Goods.objects.all()
    serializer_class = s.GoodsSerializer

看到我声明了一个Filter子类,并将其应用于:

filter_class = Filter

在添加行之前,它在一开始就起作用了:

filter_backends = (SearchFilter, Filter)
search_fields = ['name',]

这是由医生告诉

现在,而正常的搜索过滤器应用于filter_class被跳过。

一个字,他们不能一起工作。

如何解决这个问题?

最后,我发现了我们应指定两个filter_backends在一起:

from rest_framework.filters import SearchFilter
from django_filters.rest_framework import DjangoFilterBackend

class GoodsViewSet(viewsets.ModelViewSet):
    class Filter(FilterSet):    
        class Meta:
            model = m.Goods

    filter_class = Filter
    filter_backends = (SearchFilter, DjangoFilterBackend)
    search_fields = ['name',]
    queryset = m.Goods.objects.all()
    serializer_class = s.GoodsSerializer

或者我们可以忽略filter_backends特定ViewSet字段,而将它们全局应用于settings.py

REST_FRAMEWORK = {
    # ... other configurations
    'DEFAULT_FILTER_BACKENDS': (
        'rest_framework.filters.SearchFilter',
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
}

这样的filter_classsearch_fields可供选择的视图集在同一时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Django Rest Framework中哈希Django用户密码?

如何在AWS上部署Django Rest Framework和React

如何在Django Rest Framework中使用引用发布

如何在Django Rest Framework中使用JWT令牌?

如何在Django Rest Framework中使用MultiPartParser

如何在模板中使用django-rest-framework

如何在Django REST Framework中使用身份验证

如何在Django Rest Framework中使用LimitOffSetPagination代替PageNumberPagination?

如何在Django Rest Framework中使用SerializerMethodField更新

一起执行REST,CQRS和EventSourcing时如何在REST中支持Command?

如何在 Django Rest Framework 中添加后缀 url?

如何在Django Rest Framework中的动作内进行分页

如何在Django Rest Framework中验证只读字段

如何在Django REST Framework中修复UnicodeDecodeError?

如何在django-rest-framework POST中包含ForeignKey

如何在Django Rest Framework(DRF)中覆盖Response类?

Django Rest Framework:如何在ModelViewSet中关闭/打开分页

如何在Django REST Framework上启用CORS

如何在Django REST Framework中禁用身份验证

如何在Django Rest Framework中动态设置分页?

如何在Django Rest Framework中序列化ChoiceFields?

如何在Django Rest Framework SimpleRouter上使斜杠为可选

如何在Django Rest Framework GIS中转换几何

如何在 Django REST Framework 中捕获 PermissionDenied 异常

如何在Django Rest Framework中以403错误返回数据?

如何在Django Rest Framework中获得模型方法的价值?

如何在Django Rest Framework API中隐藏网址?

如何在Django Rest Framework中列出相关对象

如何在Django REST Framework中处理嵌套对象