有没有更好的办法?
解决方法 搜索参数根据django-rest-framework称为过滤器参数.有很多方法可以应用过滤,请查看 documentation.在大多数情况下,您只需要覆盖视图,而不是序列化程序或任何其他模块.
一种显而易见的方法是覆盖视图的查询集.例:
# access to /API/foo/?category=animalclass FooListVIEw(generics.ListAPIVIEw): model = Foo serializer_class = FooSerializer def get_queryset(self): qs = super(FooListVIEw,self).get_queryset() category = self.request.query_params.get("category",None) if category: qs = qs.filter(category=category) return qs
但是,django-rest-framework允许使用django-filter自动执行此类 *** 作.
首先安装它:
pip install django-filter
然后在视图中指定要过滤的字段:
class FooListVIEw(generics.ListAPIVIEw): model = Foo serializer_class = FooSerializer filter_fIElds = ('category',)
这将执行相同的 *** 作,如前面的示例所示,但使用的代码较少.
有许多方法可以自定义此过滤,有关详细信息,请参阅here和here.
还有一种方法可以申请filtering globally:
REST_FRAMEWORK = { 'DEFAulT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',)}总结
以上是内存溢出为你收集整理的如何在Django REST Framework中向GET请求添加搜索参数?全部内容,希望文章能够帮你解决如何在Django REST Framework中向GET请求添加搜索参数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)