我使用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查询,但这需要额外的工作来统一结果.