Django rest framework django筛选器不适用于django rest框架
我正在使用Django rest framework django筛选器不适用于django rest框架,django-rest-framework,django-filters,Django Rest Framework,Django Filters,我正在使用Django 2.0,Django REST框架并过滤查询集 我已经安装了django过滤器,并将其作为django过滤器添加到installed\u应用程序中 设置文件已被删除 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'oauth2_provider.contrib.rest_framework.OAuth2Authentication' ), 'DEFAULT_PERMIS
Django 2.0
,Django REST框架
并过滤查询集
我已经安装了django过滤器
,并将其作为django过滤器
添加到installed\u应用程序中
设置文件已被删除
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 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
给定的数量模型有一个指向联系人的外键,因此希望根据联系人id进行筛选
现在,当我尝试以下URL时
https://example.com/api/amount-given/?contact__id=3634de36-181c-4414-93fc-f08e3d70f1e3
它不会过滤结果并返回所有给定的数量记录。尝试更改“过滤器字段”的过滤器设置字段,如下所示:
class AmountGivenViewSet(viewsets.ModelViewSet):
serializer_class = AmountGivenSerializer
permission_classes = (IsAuthenticated,)
filterset_fields = ('contact__id',)
其他过滤器是否也有同样的问题?django filter官方文档建议我们使用filterset\u fields
只是一个提示-filterset\u fields
参数已被弃用并重命名为filterset\u fields
。