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. Python2.7与3.6的一些区别

    2.7实现了一部分3的功能, 更早版本可能会稍稍涉及一点 首先是关键字的差别 python3.6 import keyword print(keyword.kwlist) ['False', 'Non ...

  2. excel2json

    原文链接 在游戏项目中一般都需要由策划制作大量的游戏内容,其中很大一部分是使用Excel表来制作的.于是程序就需要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过 ...

  3. Ubuntu的sources.list

    参考文章: https://blog.csdn.net/u012843189/article/details/80964287 位于/etc/apt/sources.list 其中 deb http: ...

  4. FHQ-Treap小结

    \(Orz\) 范浩强大爷,竟然搞出了如此夺天地造化的数据结构. \(FHQ-Treap\),又名非旋\(Treap\),是范浩强大爷在某些奇特的灵感之下发明的一种平衡树,因其与\(Treap\)相似 ...

  5. P3436 [POI2006]PRO-Professor Szu

    P3436 [POI2006]PRO-Professor Szu 题目描述 n个别墅以及一个主建筑楼,从每个别墅都有很多种不同方式走到主建筑楼,其中不同的定义是(每条边可以走多次,如果走边的顺序有一条 ...

  6. LoadRunner运行错误集

    1.error-27796错误解决方法: 在负载生成器的注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters ...

  7. js replace替换字符串,同时替换多个方法

    在实际开发中,经常会遇到替换字符串的情况,但是大多数情况都是用replace替换一种字符串,本文介绍了如何使用replace替换多种指定的字符串,同时支持可拓展增加字符串关键字. let conten ...

  8. python+selenium自动测试之WebDriver的常用API(基础篇二)

    本篇介绍一下python+selenium复杂操作的处理,基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.常见特殊情况处理如iframe/弹窗处理 有 ...

  9. .net core ef 通过dbfirst方式连接mysql数据库

    1. 创建基于.net core的项目(过程略) 2. 利用nuget添加以下引用 MySql.Data.EntityFrameworkCore         Pomelo.EntityFramew ...

  10. .net基础学java系列(七)赶鸭子上架看项目代码

    项目用到的技术栈 序列化 com.alibaba.fastjson.JSON; https://github.com/alibaba/fastjson/wiki/Quick-Start-CN 日志 l ...