django-filter 不适用于 django-rest-framework
django-filter not working with django-rest-framework
我正在使用 Django 2.0
、Django REST Framework
和 Django Filters
来过滤查询集。
我已经安装了 django-filters
并添加到 INSTALLED_APPS
作为 django_filters
。
设置文件有
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'oauth2_provider.contrib.rest_framework.OAuth2Authentication'
),
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated'
],
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}
视图 class 就像
class AmountGivenViewSet(viewsets.ModelViewSet):
serializer_class = AmountGivenSerializer
permission_classes = (IsAuthenticated,)
filterset_fields = ('contact__id',)
def get_queryset(self):
queryset = AmountGiven.objects.filter(
contact__user=self.request.user
)
query = self.request.query_params.get('q', None)
if query:
queryset = queryset.filter(
Q(transaction_number=query) |
Q(comment__contains=query) |
Q(amountreturned__transaction_number=query) |
Q(amountreturned__comment__contains=query)
)
return queryset
AmountGiven 模型有一个指向 contact 的外键,因此想要根据 contact_id 进行过滤.
现在,当我尝试以下操作时 URL
https://example.com/api/amount-given/?contact__id=3634de36-181c-4414-93fc-f08e3d70f1e3
它不过滤结果和returns所有AmountGiven条记录。
尝试将 filterset_fields 更改为“filter_fields”,如下所示:
class AmountGivenViewSet(viewsets.ModelViewSet):
serializer_class = AmountGivenSerializer
permission_classes = (IsAuthenticated,)
filterset_fields = ('contact__id',)
我正在使用 Django 2.0
、Django REST Framework
和 Django Filters
来过滤查询集。
我已经安装了 django-filters
并添加到 INSTALLED_APPS
作为 django_filters
。
设置文件有
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'oauth2_provider.contrib.rest_framework.OAuth2Authentication'
),
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated'
],
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}
视图 class 就像
class AmountGivenViewSet(viewsets.ModelViewSet):
serializer_class = AmountGivenSerializer
permission_classes = (IsAuthenticated,)
filterset_fields = ('contact__id',)
def get_queryset(self):
queryset = AmountGiven.objects.filter(
contact__user=self.request.user
)
query = self.request.query_params.get('q', None)
if query:
queryset = queryset.filter(
Q(transaction_number=query) |
Q(comment__contains=query) |
Q(amountreturned__transaction_number=query) |
Q(amountreturned__comment__contains=query)
)
return queryset
AmountGiven 模型有一个指向 contact 的外键,因此想要根据 contact_id 进行过滤.
现在,当我尝试以下操作时 URL
https://example.com/api/amount-given/?contact__id=3634de36-181c-4414-93fc-f08e3d70f1e3
它不过滤结果和returns所有AmountGiven条记录。
尝试将 filterset_fields 更改为“filter_fields”,如下所示:
class AmountGivenViewSet(viewsets.ModelViewSet):
serializer_class = AmountGivenSerializer
permission_classes = (IsAuthenticated,)
filterset_fields = ('contact__id',)