zoukankan      html  css  js  c++  java
  • Django 学习第七天——Django模型基础第二节

    User 是自己创建的模型类,等于数据库中的表

    常用的查询方法:

      all():获取所有数据 User.objects.all()

      first():获取第一条数据: User.objects.first()

      last():获取最后一条数据: User.objects.last()

      filter():根据参数提供的条件获取过滤后的记录User.object.filter(id=1)

        User.objects.filter(id=1,age=18) # 多个条件相当于sql语句的and连接

      exclude():排除条件的所有数据 User.objects.exclude(name=‘lalala')

      get():获取一条数据 User.objects.get(id=1)

        注:只能获取一条,多余一条报错

      order_by():对结果排序(顺序): User.objects.order_by('age')

        多项排序: User.objects.order_by('age','id')

        逆向排序: User.objects.order_by('-age') # 逆向排序就是条件前面加上个负号

      values():返回 QuerySet ,字典列表User.objects.all().values()

        查询表中所有的name 以字典列表返回:User.objects.values('name')

      only():返回QuerySet,对象列表,一定包含主键字段User.objects.only('name')

     

      defer():返回QuerySet,对象列表,作用和 only() 相反,查询出除了给定条件的所有字段数据User.objects.defer('sex')

     

      count():获取当前查询到的数据的总数:User.objects.all().count()

    常用的查询条件:

      切片python列表切片用法相似,不支持负索引,数据量大时不用步长

        切片后,不在支持附加过滤条件与排序

        User.objects.all()[2:5] # 获取2~5条数据

      exact:相当于等于号

        User.objects.filter(name__exact='lalala') # 查出 name = ’lalala‘ 的数据

      iexact:跟exact一样,只是忽略大小写的匹配

      contains:包含

        User.objects.filter(name__contains='lala') # 包含 lala 的都匹配出来

      icontains:跟contains一样,唯一不同的是忽略大小写

      startswith:以什么开始

        User.objects.filter(name__startswith='la') # 查询 name 字段以 la 开始的数据

      istartswith:同startswith ,只是忽略大小写

      endswith:以什么结尾,同startswith

      iendswith:以什么结尾,忽略大小写,同istartswith

      in:成员所属:

        User.objects.filter(age__in=[18,19,20]) # 查询出age=18,19,20的所有数据

      gt:大于:

        User.objects.filter(age__gt=20) # 查询出age 大于 20的所有数据

      gte:大于等于

        User.objects.filter(age__gte=20) # 查询出age 大于等于 20的所有数据

      lt:小于

        User.objects.filter(age__lt=20) # 查询出age 小于 20的所有数据

      lte:小于等于

        User.objects.filter(age__lte=20) # 查询出age 小于等于 20的所有数据

      range:区间

        User.objects.filter(age__range=(18,30)) # 查询出 age 在18 到 30 的所有数据

      isnull:判断是否为空

        User.objects.filter(name__isnull=True)

      使用 sql 中的 or 条件查询时:

        1、先导包

    from django.db.models import Q

        2、使用:

    User.objects.filter(Q(age=0) | Q(age=1)) # 查询出 age=0 或 age=1的所有数据

      查找对象的条件的意思是传给以上方法的一些参数;相当于是SQL语句中的where语句后面的条件,语法为字段名__(两个下划线)规则

      聚合函数:

        导包:

    from django.db.models import Count,Avg,Max,Min,Sum

        Count:统计

        Avg:平均值

        Max:最大值

        Min:最小值

        Sum:求和

        通过 queryset 的 aggregate 方法使用:

     

          返回字典格式;age_avg是自定义的键

      分组:

        结合 Values,annotate 和聚合函数一起使用

        annotate

     

  • 相关阅读:
    FreeMark教程
    Intellij IDEA 创建Web项目并在Tomcat中部署运行
    catalina.home和catalina.base这两个属性的作用
    如何用javac 和java 编译运行整个Java工程
    Java中Properties类的操作
    注册邮箱验证激活技术
    commons-logging的使用
    Windows下安装GDB
    BM算法
    Intellij IDEA 部署 项目在tomcat 原理
  • 原文地址:https://www.cnblogs.com/2018-8-31/p/10497768.html
Copyright © 2011-2022 走看看