Fiv*_*ver 5 python django django-filter django-rest-framework
我已经使用Django REST Framework已有很长时间了,但是遇到一种情况,我需要在API视图中检索除已知关系以外的所有内容。再次浏览文档后,我看不到任何内置的机制来实现此目的。我意识到我可以get_queryset()在ListView中覆盖并解析自定义URL查询参数,然后进行过滤,但是我很好奇是否还有其他人有更优雅的解决方案?
更新资料
经过更多研究后,这似乎更多是django-filter问题,我找不到提及任何排除功能的信息。我确实发现了这一点:
https://bitbucket.org/mjs7231/django-rest-framework-filtering
确实提供了从结果中排除的值。
exclude在过滤器集中使用过滤器定义中的参数。
class MyFilterSet(FilterSet):
negated_field__not = django_filters.NumberFilter(name='negated_field', exclude=True)
class Meta:
model = Model
fields = ['some_field', 'some_other_field']
class MyViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Model.objects.all()
serializer_class = SomeSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = MyFilterSet
Run Code Online (Sandbox Code Playgroud)
等同于Model.objects.all().exclude(negated_field__exact=value)。然后,您可以从前端排除类似这样的网址:/api/my_viewset/?negated_field__not=value。
| 归档时间: |
|
| 查看次数: |
4385 次 |
| 最近记录: |