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. 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...

  2. 题解-BJOI2019 光线

    Problem loj3093 & x谷 题意概要:给定 \(n\) 块玻璃,每块玻璃有其折射比例与反射比例(折射比例+反射比例 不一定为 \(100\%\)),求从最上头打下一束光,有多少比 ...

  3. Python爬虫基础之UrlError

    一.urllib.error python的urllib.error模块主要是应对urllib.request在网络请求过程中出现的异常而定义的异常处理类.主要有URLError和HTTPError两 ...

  4. 学习 razor pages 指南

    这是一个系列,我打算把此人的系列翻译一下,学习技术的同时,顺便提高一下英文水平. 原文地址:https://www.learnrazorpages.com/ 前言 欢迎来学习 razor pages ...

  5. 三丶JavaScript 的基础学习(一)

      知识预览 BOM对象 DOM对象(DHTML) 8 实例练习 JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言 ...

  6. Nginx负载-nginx转发到Swoole服务器(nginx配置文件变更)

  7. https请求之绕过证书安全校验工具类(原)

    package com.isoftstone.core.util; import java.io.BufferedReader; import java.io.ByteArrayOutputStrea ...

  8. 处理soapUI特殊返回报文 【原】

    String message ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + & ...

  9. Centos7源码安装mariadb

    mariadb官网:http://mirrors.opencas.cn/mariadb 安装开发工具: yum grouplist yum groupinstall "Development ...

  10. Appium 测试微信小程序 Webview

    通过微信打开debugx5.qq.com,或者直接扫下面二维码   勾选[打开TBS内核Inspector调试功能]   Chrome查看页面元素 手机连接电脑,查看是否连接成功.如下展示设备号则为连 ...