Django rest framework django_筛选器只需应用于列表操作

Django rest framework django_筛选器只需应用于列表操作,django-rest-framework,django-filters,Django Rest Framework,Django Filters,我有一个简单的过滤器: class ContentFilter(filters.FilterSet): app = filters.UUIDFilter(required=True) ... 我在simple ModelViewSet上使用了它 class ContentView(ModelViewSet): """View for Content""" serializer_class = ContentSerializer filterset_cla

我有一个简单的过滤器:

class ContentFilter(filters.FilterSet):
    app = filters.UUIDFilter(required=True)
    ...
我在simple ModelViewSet上使用了它

class ContentView(ModelViewSet):
    """View for Content"""
    serializer_class = ContentSerializer
    filterset_class = ContentFilter
但当我尝试get/contents/:id/I get错误时:

{
  "app": [
    "This field is required."
  ]
}
所以,我的问题是。如何仅为我的
列表
操作设置
required=True

我的解决办法是:

 def filter_queryset(self, queryset):
        """We need display filter only on list request, otherwise we get error on /id/ requests about app is required"""
        if self.action != 'list':
            self.filterset_class = None
        return super().filter_queryset(queryset)

更好的解决方案是什么,也许我可以在filter类中配置它?

我遇到了这个问题,你找到解决方案了吗?是的,我在问题中添加了它:我的解决方案是……我很惊讶这不会出现更多问题,
required=True
显然不应该应用于任何细节端点。这基本上是一个bug。不管怎样,我使用了你的解决方案。@jsj不客气!