1. 相关命令

    1. python3 manage.py makemigrations
      根据模型生成相关迁移文件
    2. python3 manage.py migrate
      根据迁移文件,将表结构更新到数据库中,并在Django中带的migrations数据表中更改数据库记录
  2. 字段
    1. 常用的字段

      1. 自增长字段

        1. models.AutoField()
        2. models.BigAutoField()
      2. 二进制数据
        1. models.BinaryField()
      3. 布尔型
        1. 允许为空 models.BooleanField()
        2. 不允许为空 models.NullBooleanField()
      4. 整型
        1. 5个字节的正整数models.PositiveSmallIntegerField()
        2. 6个字节的整数
          models.SmallIntegerField()
        3. 11个字节的整数
          models.IntegerField()
        4. 20个字节的整数
          models.BigIntegerField()
      5. 字符串类型
        1. varchar
          models.CharField(max\_length=100)
        2. longtext
          models.TextField()
      6. 时间日期类型
        1. 年月日
          models.DateField()
        2. 年月日时分秒
          models.DateTimeField()
        3. 一段时间,在数据库中是int类型,底层是 Python timedelta 实现
          models.DurationField()
      7. 浮点型
        1. models.FloatField()
        2. 可以指定整数多少位,小数多少位
          models.DecimalField()
      8. 其它字段
        1. 邮箱
          models.EmailField()
        2. models.ImageField()
        3. models.FileField()
        4. models.FilePathField()
        5. models.URLField()
        6. models.UUIDField()
        7. IP地址,可以是IPV4,也可以是IPV6
          models.GenericIPAddressField()
    2. 关系型字段
      1. 一对一
        models.OneToOneField(Model)
      2. 多对一
        models.ForeignKey(Model)
      3. 多对多
        models.ManyToManyField(Model)
    3. 字段类型参数
      1. 所有字段都有的参数

        1. db_column='name'
        2. primary_key=True
        3. verbose_name='别名或者注释'
        4. unique=True
        5. null=True,blank=True
        6. db_index=True 给表单建立索引
        7. help_text='' 表单中显示帮助信息
        8. editable=False 表单不可编辑
      2. 个别字段才有的参数
        1. 给CharField 指定最大长度 max_length=100
        2. 时间
          1. unique_for_date=True
          2. unique_for_month=True
          3. auto_now=True 更新时间
          4. auto_now_add=True 新增时间
        3. 浮点型 Decimal
          1. max_digits=4 表示一共有多少位数
          2. decimal_places=2 表示小数有多少位
      3. 关系型字段的参数
        1. related_name='name' 反向查询时候可能会用到
        2. on_delete=value
          value的值

          1. CASCADE:删除引用的对象时,也删除引用它的对象
          2. PROTECT:禁止删除引用的对象。SQL等价物:RESTRICT。
          3. SET_NULL:将引用设置为NULL(要求字段可以为空),当字段设置null=True才可以使用
          4. SET_DEFAULT:设置默认值。只有当字段设置了default参数时才能使用 SQL等价物:SET DEFAULT。
          5. SET(value 或者 函数返回值):设置给定值。这个不是SQL标准的一部分,完全由Django处理。
          6. DO_NOTHING:SQL等价物:NO ACTION。
      4. 自关联
        1. 写法一:
          modles.ForeignKey('self',verbose_name='自关联')
        2. 写法二:
          modles.ForeignKey('Model',verbose_name='自关联')
  3. 元数据,Meta类定义了一些元数据的信息,Meta类的字段如下:
    1. db_table
    2. ordering 列表或者元组形式
    3. verbose_name 别名
    4. verbose_name_plural 别名复数
    5. abstract 不同步到数据库,只是用于被别的类继承
    6. permissions 定义权限
    7. managed 是否按照Django规则管理模型类 默认是True
    8. unique_together=()/((),()) 对应MySQL中的联合唯一约束
    9. app_label 指定模型属于哪个应用(如果在settings里面已经注册过应用的话,就不用写这个字段了)
    10. db_tablespace 定义数据库表空间的名字
  4. Django 数据表操作
    1. 更改数据表

      1. 删除数据库表步骤

        1. 删除对应的模型类代码
        2. 删除migrationd文件夹下面的模型类
        3. 删除Django的migrations表中对应的记录
        4. 删除数据库表
    2. 导入数据
      1. Django shell 导入数据 引入模型 调用模型对象的save方法
      2. 自己定义一个脚本批量导入数据
      3. fixtures Django serialization -> model 保存
        1. python3 manage.py dumpdata > data.json
        2. python3 manage.py loaddata data.json
      4. 通过数据库客户端或则source文件导入数据
    3. 导出数据
      1. python3 manage.py dumpdata > data.json
      2. pycharm 导出
      3. mysqldump 导出
    4. 数据操作
      1. 返回QuerySet 的 API

        1. all(),filter(),order_by(),exclude(),reverse(),distinct()
        2. extra(),defer(),only() 实现字段别名,排除一些字段,选择一些字段
        3. values(),values_list() 获取字典或者元组形式的结果集
        4. dates(),datetimes() 根据时间日期获取查询集
        5. union(),intersection(),difference() 并集,交集,差集;MySQL Innodb 只支持并集
        6. select_related() 一对一、多对一查询优化,prefetch_related() 一对多、多对多查询优化。 反向查询
        7. annotate() 使用聚合计数,求和,平均数,raw() 执行原生SQL
          annotate()对分组后的结果进行统计
        8. Model.objects.get().子表的表名 _set.all()
      2. 不返回QuerySet 的 API
        1. 获取对象 get(),get_or_create(),first(),last(),latest(),earliest(),in_bulk()
        2. 创建对象 create(),bulk_create(),create_or_update() 创建,批量创建,创建或更新
        3. 更新对象 update(),update_or_create() 更新,更新或创建
        4. 删除对象 delete() 使用filter 过滤
        5. 其它操作 exists(),count(),aggregate() 判断是否存在,统计个数,聚合
          aggregate() 是对这个数据表中的数据进行统计
      3. 自定义聚合查询
    5. F对象和Q对象
      1. F对象:操作字段的数据
      2. Q对象:结合 AND , OR ,NOT, | , ~ , & 实现复杂的查询

注: 本文知识点是根据自己的项目经验及慕课网的教学视频整理所得,
如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/10223596.html

Django ORM 知识概要的更多相关文章

  1. django基础知识

    一.django的安装 1. pip3 install django 2. 把安装路径加到环境变量里以便以后启动admin相关命令,在windows系统中---我的电脑---属性----高级系统设置- ...

  2. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作

    静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...

  3. django orm总结[转载]

    django orm总结[转载] 转载地址: http://www.cnblogs.com/linjiqin/archive/2014/07/01/3817954.html 目录1.1.1 生成查询1 ...

  4. Django ORM - 001 - 外键表查询主表信息

    开始用Django做web开发,我想大家都会遇到同样的问题,那就是如何高效快速的查询需要的数据,MVC都很简单,但是ORM折腾起来就有些费时间,我准备好好研究下Django ORM,所以会有一个系列的 ...

  5. Django ORM 中的批量操作

    Django ORM 中的批量操作 在Hibenate中,通过批量提交SQL操作,部分地实现了数据库的批量操作.但在Django的ORM中的批量操作却要完美得多,真是一个惊喜. 数据模型定义 首先,定 ...

  6. Django ORM 查询管理器

    Django ORM 查询管理器 ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言 ...

  7. Django 基础知识

    Django Models django 本身提供了非常强大易使用的ORM组件,并且支持多种数据库,如sqllite,mysql,progressSql,Oracle等,当然最常用的搭配还是mysql ...

  8. Django ORM模型的一点体会

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...

  9. 数据库表反向生成(二) Django ORM inspectdb

    在前一篇我们说了,mybatis-generator反向生成代码. 这里我们开始说如何在django中反向生成mysql model代码. 我们在展示django ORM反向生成之前,我们先说一下怎么 ...

随机推荐

  1. [Kubernetes]深入理解StatefulSet

    前面我写的一系列博客,如果你能够耐心看到这一篇,那你应该对一个概念就不是太陌生了:Deployment. 为什么提这个概念呢,这就要说到Deployment的一个不足了.Deployment不足以覆盖 ...

  2. TestNg框架基础入门

    TestNg框架简介: TestNG,即Testing, Next Generation,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架.TestN ...

  3. Idea 使用小技巧【取消自动打开项目】

    受到我沈誉大大的启发,把每次的项目自动启动上次的项目给关掉,其实不管掉也行,既然这样,那还是关掉吧. ctrl + alt + s 输入 system Settings 然后把Reopen last ...

  4. OpenCV-Python:Harris角点检测与Shi-Tomasi角点检测

    一.Harris角点检测 原理: 角点特性:向任何方向移动变换都很大. Chris_Harris 和 Mike_Stephens 早在 1988 年的文章<A CombinedCorner an ...

  5. ubuntu apt不使用代理

    常见的问题是apt使用代理. 不过今天遇到的情况是,桌面进不去,只能tty:在tty界面下,发现1080端口上开着代理,/etc/environment和~/.bashrc中都确保注释掉了http_p ...

  6. 【JAVA】反射总结

    反射是什么? 反射就是指程序在运行的时候可以知道一个类的自身信息. 自身信息有哪些:类方法.属性.成员变量.构造方法.包等 动态编译和静态编译  静态编译:在编译的时候进确定类型,如果绑定对象成功,n ...

  7. LOJ#6374 网格

    题解: 挺好的一道题 两次容斥+一次二项式反演 首先考虑部分分不存在k的限制 然后我们发现两维之间是互相独立的 下面以x轴为例 然后问题就变成了 $$\sum\limits_{i=1}^{R} {xi ...

  8. IIS处理并发请求设置

    一个ASP.NET项目在部署到生产环境时,当用户并发量达到200左右时,IIS出现了明显的请求排队现象,发送的请求都进入等待,无法及时响应,系统基本处于不可用状态.   当发现请求明显延迟,没有被即时 ...

  9. day21.模块和包

    博客整理来源:http://www.cnblogs.com/Eva-J/articles/7292109.html 模块 1.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件 ...

  10. php八种常用函数

    八种常用的数学函数: ①  abs(x):求绝对值 ②  ceil(x),floor(x):向上/下取最接近的整数 ③  cos(x),sin(x),tan(x):三角函数 ④  min(),max( ...