当前位置:  开发笔记 > 编程语言 > 正文

DRF - 是否可以将URL中的多个过滤器参数与某种OR逻辑符号组合在一起

如何解决《DRF-是否可以将URL中的多个过滤器参数与某种OR逻辑符号组合在一起》经验,为你挑选了0个好方法。

我使用Django REST Framework构建了一个REST端点.

class PersonFilter(django_filters.FilterSet):
    id = django_filters.NumberFilter(name="id", lookup_type="gt")
    first_name = django_filters.CharFilter(name="first_name", lookup_type="icontains")
    last_name = django_filters.CharFilter(name="last_name", lookup_type="icontains")

class Meta:
    model = Person
    fields = ('id', 'first_name', 'last_name', 'last_mod')

class PersonModelViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Person.objects.none()
    filter_backends = (filters.DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
    pagination_class = StandardResultsSetPagination
    ordering_fields = ('id', 'first_name', 'last_name', 'last_mod')
    ordering = ('last_mod', 'id')
    filter_class = PersonFilter

现在,如果我提出这样的请求:

/api/rest/v1/Person?first_name=foo&last_name=foo&page_size=10

这仅返回名字和姓氏都包含"foo"的对象.我想返回名字中包含"foo"或姓氏包含"foo"的那些对象.

我想知道URL参数中是否有可用的符号,这意味着过滤器之间的逻辑或关系.

一种解决方法是向端点发出两个单独的AJAX查询,但这需要额外的工作来统一结果.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有