django模型二


  • 常用模型字段类型

    • IntegerField   →    int
    • CharField   →   varchar
    • TextField  →    longtext
    • DateField  →   date
    • DateTimeField   →   datetime
    • AutoField  →    int  (自增长)

 

  • Field的常用参数

    • primary_key:是否设置为主键
    • unique:是否唯一
    • null:指定是否为空,默认是False
    • blank:等于True时form表单验证时可以为空,默认False
    • default:设置默认值
    • DateField.auto_now:每次修改都会将当前时间更新进去,只有调用:QuerySet.update方法将不会调用,这个参数只是Date和DateTime以及TimModel.save()方法会调用类的时候才有的
    • DateField.auto_now_add:第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值
  • 常用查询

    • 通过模型类上的管理器(模型类.objects)来构造QuerySet(数据库中对象的集合:select语句)
    • all() :获取所有记录  返回的是queryset,支持切片
    • first() :获取的是第一条记录,返回的是对象
    • last():获取最后一条,返回的是对象
    • get(**kwargs):根据给定的条件,获取一个对象,如果有多个对象符合,则会报错
    • fillter(**kwargs):根据给定的条件,获取一个过滤后的queryset
    • exclude(**kwargs):和fillter的作用相反
    • 多条件的QR连接,用到Q对象 (django.db.models.Q)
      • from django.db.models import Q
      • 模型类.objects.fillter(Q(age=0)|Q(age=1))
    • values(*filed):返回一个queryset,返回一个字典列表,而不是数据对象only(*filed):返回queryset,对象列表,注意only返回一定包含主键字段
      • 模型类.objects.values(字段变量名)
      • 可通过列表取值的方法直接取出value
    • defer(*field):用法和only一样,作用和only相反
    • onder_by:根据给定的字段排序,默认从小到大;倒序只需在所要查询的字段的前面加上一个减号就好了
    • 切片:和Python的列表切片用法相似,不支持负索引,数量大时不用步长
      • 切片之后,不在支持附加过滤条件与排序

      

  • 常用聚合条件查询

    • exact       //支持 get   fillter     exclude

      • 准确匹配

        • 模型类.objects.get(id__exact=0)

          • 查询该表里的id=0的信息
    • iexact
      • 不区分大小写的匹配(模糊匹配)
    • contains
      • 包含匹配,找到包含所传入的对象的值
    • icontains
      • 不区分大小写的包含匹配
    • in
      • 给定范围查询,返回查到的对象

        • 模型类.objects.get(id__in=[给定的范围])
    • range
      • 给定的范围查询,返回所有范围对象

        • 模型类.objects.get(id__range(给定的范围)
    • gt
      • 查询大于某一范围的对象并返回

        • 模型类.objects.get(id__gt=给定的值)
    • gte
      • 查询大于等于某一范围的值并返回

        • 模型类.objects.get(id__gte=给定的值)
    • lte
      • 查询小于等于某一范围的值并返回
    • lt
      • 查询小于某一范围的值并返回
    • startswith
      • 查询以某某开头的对象并返回
      • 大小写敏感
    • istartwith
      • 查询以某某开头的对象并返回
      • 大小写不敏感
    • endswith
    • iendswith
    • isnull

    

  • 聚合查询

    • from django.db.models import Avg, Max, Count, Sum
    • count   // 计数
      • 可跟不同的对象结合使用

        • 模型类.objects.get(id__gte=给定的值).count()
        • 模型类.objects.all().count()
    • avg  // 平均数
      • 模型类.objects.aggregate(age_avg=Avg('age'))

        • 查询年龄的平均数
    • max
      • 模型类.objects.aggregate(age_max=Max('age'))
    • min
    • sum
  • 分组查询
    • 模型类.objects.values('sex').annotate(Count('sex')

django模型二的更多相关文章

  1. django模型系统(二)

    django模型系统(二) 常用查询 每一个django模型类,都有一个默认的管理器,objects QuerySet表示数据库中对象的列表.他可以有0到国歌过滤器.过滤器通过给定参数,缩小查询范围( ...

  2. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  3. day 70 Django基础五之django模型层(二)多表操作

    Django基础五之django模型层(二)多表操作   本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...

  4. day 56 Django基础五之django模型层(二)多表操作

    Django基础五之django模型层(二)多表操作   本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...

  5. django Model模型二及Model模型对数据库的操作

    在django模型中负责与数据库交互的为Model层,Model层提供了一个基于orm的交互框架 一:创建一个最基本的Model from __future__ import unicode_lite ...

  6. 八.django模型系统(二)之常用查询及表关系的实现

    Ⅰ.常用查询  1.几个概念 每一个django模型类,都有一个默认的管理器,objects,查询就是依赖于objects管理器进行的(在创建时就被添加了). QuerySet表示数据库中对象的列表( ...

  7. django模型系统二

    常用查询及表关系的实现 1.常用查询 每一个django模型类,都有一个默认的管理器 objects QuerySet表示数据库中对象的列表,它可以有0到多个过滤器.过滤器通过给定参数,缩小查询范围. ...

  8. django模型

    用django时,只要用到数据库就得用到模型. 一.数据库的MTV开发模式 从MVC到MTV 所谓软件架构的MVC模式将数据的存取逻辑(Module),表现逻辑(View)和业务逻辑(Controll ...

  9. 一 Django模型层简介(一)

    模型 django提供了一个强大的orm(关系映射模型)系统. 模型包含了你要在数据库中创建的字段信息及对数据表的一些操作 使用模型 定义好模型后,要告诉django使用这些模型,你要做的就是在配置文 ...

随机推荐

  1. 常见IO模型

    在socket的通信中,recv,accept,recvfrom(UDP协议接收信息)这些阶段由于需要收到信息,才能继续下面的代码,所以这些阶段叫做阻塞,类似于我们python变成中的input函数, ...

  2. python入门(五)

    一.函数返回值 1.函数如果返回多个值,他会把这几个值放到一个元组里面 2.也可以用多个变量来接收 返回多个值放到元组里面 def say(): num1=1 num2=2 num3=3 return ...

  3. 解决Warning: mysql_connect(): Headers and client library minor version mismatch. 警告

    php -i|grep Client 查询当前Client 版本,结果如下: Client API version => 5.6.31Client API library version =&g ...

  4. 003dayPython学习初始模块和字节码

    一.注释: 1.单行注释 # 被注释的内容 2.多行注释 """ 被注释的内容 """ 二.模块 我们在编程的时候,往往是一个主.py文件, ...

  5. PLC之六部十层电梯整体框架

    1.基本框架 此图基于西门子杯逻辑控制赛项中电梯题目的变量表以及功能设计 1.I/O输入是指变量表中的input数字量,包括电梯所有的内呼按钮.外呼按钮.电梯平层开关等 2.逻辑处理是指根据相对应的输 ...

  6. erlang二进制

    在Erlang中写处理二进制数据的代码是洋溢着幸福感的,它对于二进制强大的表现力甚至能让你忘掉了它种种不便,今天我们说说Erlang的二进制数据处理. Erlang中bit string代表无类型的内 ...

  7. 关于Apache的配置方法和步骤

    一.下载.安装和卸载 网址:https://httpd.apache.org/docs/current/platform/windows.html#down 点击ApacheHaus,在里面下载任何版 ...

  8. python识别图片中的代码。

    在看并发编程网的时候,有些示例代码是以图片的形式出现的,要是此时自己想复制下来的话,只能对着图片敲了,很不爽,于是搜了一下识别图片的网站,有! 把图片上传上去解析,下来txt文本,打开一看,大部分能解 ...

  9. 同一脚本sh 脚本名 报Syntax error: "(" unexpected而./脚本名不报错,求解!!

    同一脚本sh 脚本名 执行时报Syntax error: "(" unexpected:而./脚本名执行不报错,为什么呢 脚本内容如下: function usage(){ ech ...

  10. 今天遇到一个关于栈溢出的问题StackOverflowError

    关于这个问题个人认为是一个比较棘手的问题,因为我们每个人遇到溢出问题的原因都不一样,所以遇到这样的问题就多从问题的根本入手. 我遇到的原因是,循环多次导致的,以为我的俩个互相关联的实体类,当作查询时, ...