Django-rest-framework中过滤器的定制
来源:互联网 发布:淘宝中老年女夏装 编辑:程序博客网 时间:2024/06/16 01:41
Django-rest-framework中过滤器的定制
- 定义一个自定义的filter.py模块,增加一个新的过滤类
import django_filters#这个Q可以支持表查询,单下划线获取表字段,双下划线获取关联表,from django.db.models import Q#引入自己的模型from app.item.models import ItemCategory#自定义的过滤类,需要继承django_filter.rest_framework中的FilterSet类class ItemCategoryFilter(django_filters.rest_framework.FilterSet): Filter_category = django_filters.NumberFilter(method='category_filter', label='Filter_category') #django_filters.NumberFilter类似,ModelForm中字段类型的控制 #其中method指向自己定义的过滤函数,label用于标识在测试API界面中的过滤界面字段,Filter_category控制查询字段 def category_filter(self, queryset, name, value): #这里用到多级联表查询 return queryset.filter(Q(category_id=value)|Q(category__parent_id=value)|Q(category__parent__parent_id=value)|Q(category__parent__parent__parent_id=value)) class Meta: model = ItemCategory fields = []
2.将视图处理类中的,过滤器后端重新指定,将过滤器类连接到我们自定义实现的处理类上
class ItemsListByCategory(generics.ListCreateAPIView): ''' 根据category编号获取相关模型no。 请求中请带有参数category @:require param: category such as: GET /itemsListByCategory/?Filter_category=2 ''' from django_filters.rest_framework import DjangoFilterBackend from app.item.filters import ItemCategoryFilter queryset = ItemCategory.objects.all() serializer_class = ItemCategorySerializer pagination_class = CommonPagination # 在这里哦 filter_backends = (DjangoFilterBackend,) filter_class =ItemCategoryFilter permission_classes = (ReadOnly,)
阅读全文
0 0
- Django-rest-framework中过滤器的定制
- django-rest-framework过滤器的使用(三)
- 定制django-rest-framework响应
- django rest framework中认证Authentication
- 如何优化 Django REST Framework 的性能?
- Django REST framework 的快速入门教程
- django rest framework 视图类的关系
- python django rest framework Serialization 的学习
- Django REST framework
- Django REST framework API
- Django REST framework
- Django-Rest-Framework 教程
- django rest framework Serializer
- Django Rest Framework
- django rest framework quickstart
- Django rest framework
- Django rest framework --- Routers
- Django rest framework ---Serializers
- python __call__类方法
- Ugly Number II问题及解法
- Eclipse 使用流程
- linux入门7
- C语言——malloc和free
- Django-rest-framework中过滤器的定制
- BZOJ 1598: [Usaco2008 Mar]牛跑步 启发式搜索
- 函数/代码的安全与volatile
- Android Studio代码调试大全
- erlang 服务器崩溃bug
- [杂题] Codeforces #632D Longest Subsequence
- java学习系列4(内存模型)
- 27. Remove Element
- eclipse启动出现“An Error has Occurred. See the log file”解决方法