django 简单搜索与分页

一、 简单搜索与分页实战


 多个字段中包含搜索关键字返回
 http://127.0.0.1/api/v1/release/projectinfo?query=tian
 ’‘’
    def get(self, request):
     result = {'count': '', 'pagenum': 1, 'data': '', 'meta': {'msg': 'OK', 'status': 200}}
     try:
         # 根据参数:query 是否为空判断如何查询,为空全量查询,否则进行过滤
         search_words = request.query_params.get('query').strip()
         if search_words is not None:
             # 使用Q对象进行关键字条件查询
             condition = Q(name__icontains=search_words) | Q(service_type__icontains=search_words) | Q(
                 owner__icontains=search_words)
             project = Project.objects.filter(condition)
         else:
             project = Project.objects.all().order_by('id')
         # 分页实现
         count = project.count()
         # 创建对象
         pg = MyPagination()
         # 获取分页数据
         page_query = pg.paginate_queryset(queryset=project, request=request, view=self)
         # 序列化数据
         project_ser = ProjectSerializer(page_query, many=True)
         result['data'] = project_ser.data
         result['count'] = count
     except Exception as e:
         logger.error(e)
         result['meta']['msg'] = '获取数据失败'
         result['meta']['status'] = 500
     return Response(result)

补充django 中的 Q对象
通过符号:&(且) | (或) ~(非) 处理不同的情况。
参考:https://www.jianshu.com/p/848bfc02c2a9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值