zoukankan      html  css  js  c++  java
  • djangoDRF查询

    DRF全部查询基础示例

    	from django.db.models import Q, F, Sum, Avg, Count, Min, Max
            from rest_framework.response import Response
    	from rest_framework.views import APIView
    
    
    	class ShowView(APIView):
        	def get(self, request):
        
                # 查询年龄等于19的数据
                user = User.objects.filter(age=19)
                print(user)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                # 查询全部数据
                user = User.objects.all()
                print(user)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                # 查询年龄等于19的数据的个数
                user = User.objects.filter(age=19).count()
                print(user,'--------------------------------')
                return Response('ok')
    
                # 查询年龄不等于19的全部数据
                user = User.objects.exclude(age=19)
                print(user)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                # 查询一个字段是否包含要查询的关键字
                user = User.objects.filter(classrooms__address__contains='庆')
                print(user)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                # startswith,endswith 以指定值开头或结尾
                user = User.objects.filter(classrooms__address__startswith='昌')
                print(user)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                user = User.objects.filter(classrooms__address__endswith='区')
                print(user)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                # 查询一个字段是否为空
                user = User.objects.filter(age__isnull=False)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                # 范围查询
                # in  在范围内    range  相当于between...and...
                user = User.objects.filter(age__in =[ 1, 13,18, 19, 22])
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                user = User.objects.filter(age__range=[10, 20])
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                # ⽐较查询:
                # gt      ⼤于
                # gte     ⼤于等于
                # lt      ⼩于
                # lte     ⼩于等于
                # exclude  不等于
    
                # F对象和Q对象
                # ⽐较两个字段对象之间的关系⽤F对象。(F对象可以进⾏运算)
                user = User.objects.filter(age__gte=F('hight'))
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
    
                user = User.objects.filter(age__gte=F('hight') * 2)
                user_obj = UserSer(user, many=True)
                return Response(user_obj.data)
            	
                
                class HightsView(APIView):
    
        		def get(self, request):
            	user_obj = User.objects.filter(Q(hight__gte=150) and Q(hight__lte=170) | Q(age__lt=20))
            	
                    ser = UserSer(user_obj, many=True)
                    return Response(ser.data)
    
                # 聚合函数
                # 使⽤aggregate()过滤器调⽤聚合函数。聚合函数包括:Avg 平均,Count 数量,Max 最⼤,
                # Min 最⼩,Sum 求和
                user = User.objects.aggregate(sum=Sum('age'))
                print(user)
                return Response('ok')
    
                user = User.objects.aggregate(avg=Avg('age'))
                print(user)
                return Response('ok')
    
                user = User.objects.aggregate(count=Count('age'))
                print(user)
                return Response('ok')
    
                user = User.objects.aggregate(min=Min('age'))
                print(user)
                return Response('ok')
    
                user = User.objects.aggregate(max=Max('age'))
                print(user)
                return Response('ok')
    
  • 相关阅读:
    计算机网络中的多路复用技术
    ActiveMQ之一--ActiveMQ入门
    ehcache介绍
    I/O模型之二:Linux IO模式及 select、poll、epoll详解
    【甘道夫】HBase(0.96以上版本号)过滤器Filter具体解释及实例代码
    Android Studio安装及主题字体配置
    HDU 2136 Largest prime factor 參考代码
    update更新两个字段
    Hadoop对小文件的解决方式
    赵雅智_ContentProvider
  • 原文地址:https://www.cnblogs.com/-tender/p/14034679.html
Copyright © 2011-2022 走看看