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')

最新文章

  1. GO語言基礎教程:流程控制
  2. MongoDB入门二:基本概念
  3. SpringMVC源码解析 - HandlerMethod
  4. Guava库
  5. asp.net core VS goang web[修正篇]
  6. get方式提交中文乱码(两次编码,一次解码)
  7. Docker 最常用的监控方案 - 每天5分钟玩转 Docker 容器技术(78)
  8. 射线法(1190 - Sleepwalking )
  9. CCNet: Criss-Cross Attention for Semantic Segmentation 里的Criss-Cross Attention计算方法
  10. SpringBoot多模块项目打包问题
  11. Django Rest framework 框架之解析器
  12. ERP项目实施记录09
  13. HDU3987(最小割最少割边)
  14. JS之鼠标改变img
  15. 跨域(六)——window.name
  16. dxp altium pcb里面如果想让重叠的两个元件不报错怎么设置?
  17. Redis开发 - 1. 认识redis
  18. @ConfigurationProperties与@value区别
  19. MAC 系统 各种操作
  20. SGDMA

热门文章

  1. [whk] 解三元一次方程
  2. [图像处理] YUV图像处理入门4
  3. [编程基础] Python日志记录库logging总结
  4. HBase详解(03) - HBase架构和数据读写流程
  5. nmap脚本详解
  6. STL序列式容器使用注意、概念总结
  7. JSP第七次作业
  8. 洛谷 P3137 [USACO16FEB]Circular Barn S
  9. 【踩坑记录】@Transactional注解回滚不生效问题
  10. springcloud04 Ribbbon