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不客气!