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. /usr/bin/ld: warning: libavformat.so.57, needed by /home/camera.so, not found (try using -rpath or -rpath-link)

    ffmpeg中,使用libavformt.so.57时,查找不到. 解决方案: 修改ld.so.conf文件,添加路径. sudo gedit /etc/ld.so.conf 在文件末尾添加路径 /u ...

  2. 推荐前端开发手机调试打印神器console.log()

    下面说的这个插件很牛,相信很多人都不知道,但找问题的时候很需要,直接上干货如下: vConsole:一个轻量.可拓展.针对手机网页的前端开发者调试面板. 下载 vConsole 的最新版本.(不要直接 ...

  3. JAVA 封装的简单运用

    package Code425;class person{ private String name ; String place; String school; String habits; int ...

  4. BaiduMap路程计算

    #BaiduMap路程计算def getDistance(deslat,deslng,originlat,originlng): url='http://api.map.baidu.com/direc ...

  5. python2 使用pip安装psycopg2出现错误:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-mvzdNj/psycopg2/

    公司业务需求,开发语言python2,需要使用数据库:postgresql,需要安装模块psycopg2这个模块, 使用pip install psycopg2 报错: Command "p ...

  6. 04-HTTP协议和静态Web服务器

    一.HTTP协议(HyperText Transfer Protocol)     超文本传输协议,超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片.音乐.视频.超链接等等都属于超文本. ...

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

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

  8. Linux tar命令之--exclude参数 排除指定的文件或目录

    https://my.oschina.net/u/3285916/blog/1632552 参数: --exclude 打包时排除不需要处理的文件或目录 说明: tar -zcf a.tar.gz 打 ...

  9. C# FTP下载图片转为Base64

    public string GetFtpBase64String(string FtpFilePath) { try { string sBase64String = string.Empty; Ft ...

  10. jdbc crud

    最近在做一个mybatis的sql审计,所有需要原生的使用一下jdbc,基于次,复习一下自己的基础知识 github 地址: https://github.com/warriorg/nodes/tre ...