对象属性与继承关系:

对象属性

1. 显示属性
- 开发者手动定义的,直接看的到的
2. 隐式属性
- 系统根据需求,自动创建的对象
- objects 它是model.Manager对象
- 当我们手动创建了Manager对象的时候,它就不会自动生成了 Manager 1. 创建模型
- 自己书写方法创建
- 创建对象的时候可以对字段指定默认值
2. get_queryset 获取结果集的方法
- get_queryset().filter().exclude 模型继承 1. 默认模型就是允许继承的,但是默认的继承处理方式不是很合理
- 默认在父类中定义的字段会存在父类的表中,子类的数据通用部分会存在父表中,子类特有数据会在子表中,子类通过外键进行级联
- 默认方式比较垃圾,效率比较低
- 数据库优化策略
- 避免IO
- 避免关系过多级联
2. 开发中,需要将父类抽象化,在元信息中使用abstract=True
- 抽象化的父类不会再数据库生成表了
- 子类会将父类中的通用数据,复制到子表中 django_migration 1. 作用,用来记录数据库迁移的
2. 每次迁移都会在数据库中进行一个记录
3. 每次生成迁移的时候,都会去库中进行检索上一次的迁移记录
4. 如果我们复用数据库的时候,需要删除迁移记录 模型关系 1. 1:1
- OneToOneField
- 通过外键实现
- 对外键添加唯一约束
- 人和身份证
- 在身份证中声明关系(身份证关联到人)
- 默认情况下,删除人,关联的身份证会自动被删除
- 删除身份证,人不受影响的
- 主表 (Person) 从表 (IDCard),声明关系的表就是从表
- 级联数据获取
- 从获取主, 关系是直接声明的,它是一个显性属性
- 主获取从, 关系字段是隐性属性,对象.关系模型名 (小写)
2. 1:M
- 级联数据获取
- 从获取主,(多获取一),显性属性,直接获取
- 主获取从, 一获取多,隐性属性,和model.Manager同源
- 也支持查询的各种过滤
- 对象.关联对象_set. all
- all ,exclude,last,first,filter,get
3. N:M
- 底层是通过两个外键实现,两个外键存在关系表中 - UNIQUE(XX,YY) 存储的数据不能同时相等 1,1 1,2 2,1 2,2
- 删除数据的时候会删除自己的数据和关系表中的数据
- 级联数据获取
- 通过商品获取购买者(从获取主),也是一个集合,类似model.Manager 也可以进行filter,exclude,all
- 通过购买者获取所有商品(从主获取从),隐性属性 对象.关联对象_set. all fliter exclude 1. on_delete
- CASECADE 默认,默认删除级联数据
- PROTECT 保护模式,当存在级联数据的时候,删除会抛出,保护异常,不存在级联数据的时候,是允许删除的
- SETXXX
- NULL 值本身允许为空
- DEFAULT 字段本身有默认值
- 具体值 具体值 homework 1. 模型关系搞清

Django学习总结- ③的更多相关文章

  1. 今天主要推荐一下django学习的网址!

    前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了 ...

  2. Django 学习笔记之四 QuerySet常用方法

    QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...

  3. Django 学习笔记之三 数据库输入数据

    假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...

  4. Django学习系列之Form基础

     Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  5. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  6. Django学习笔记(三)—— 型号 model

    疯狂暑期学习 Django学习笔记(三)-- 型号 model 參考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'defaul ...

  7. django学习之Model(二)

    继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.m ...

  8. Python框架之Django学习

    当前标签: Django   Python框架之Django学习笔记(十四) 尛鱼 2014-10-12 13:55 阅读:173 评论:0     Python框架之Django学习笔记(十三) 尛 ...

  9. Django 学习笔记(二)

    Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ...

  10. Django 学习笔记(五)模板标签

    关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...

随机推荐

  1. 关于$NOIP2017$的题目讲解

    关于\(NOIP2017\)的题目讲解 1.小凯的疑惑 题目描述: 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法 ...

  2. 使用Analyze 和Instruments-Leaks分析解决iOS内存泄露

    版权声明:本文为博主原创文章,未经博主允许不得转载. 使用Analyze和Instruments-Leaks分析解决iOS内存泄露   实验的开发环境:Xcode 7   一.使用Product-An ...

  3. react系列(五)在React中使用Redux

    上一篇展示了Redux的基本使用,可以看到Redux非常简单易用,不限于React,也可以在Angular.Vue等框架中使用,只要需要Redux的设计思想的地方,就可以使用它. 这篇主要讲解在Rea ...

  4. oracle 12如何解锁账户锁定状态及修改忘记的密码

    有两种方法,大同小异吧,感觉命令真是个好东西,哈哈哈哈,挽救了我安了4次才安好的oracle!!! 方法一: 1.如果忘记密码,找到忘记密码的是哪个用户身份,如果用户被锁定,可以使用下面说的方法解除锁 ...

  5. Illegal modifier for parameter userMapper; only final is permitted

    报错的原因是 package com.chen.service.impl; import java.io.IOException; import java.io.InputStream; import ...

  6. Linux学习笔记——1.超级用户

    以超级用户工作:su su命令允许临时变换到任何一用户标识(如果拥有口令的话),并挂起当前shell,为新用户开启一个新的shell. su <user> 将当前用户标识harley变换为 ...

  7. js中定时器使用方法经验总结

    前言,最近在做一个音频播放项目的时候,碰到播放时间精度的问题,捣鼓了几天,最终巧妙的运用定时器去降低了错误发生频率 正题,下面是对定时器的使用总结,如有错误之处,请读者加以纠正. 延迟执行(1次) s ...

  8. MAC系统 输入管理员账户密码 登录不上

    mac新系统改密码~管理员 升级10.13.2后,很多不会操作了, 那天把系统管理员设置成了普通管理,就不能打开个别软件了, 贼尴尬~~~ 后来找blog才解决,现在分享下~~ http://www. ...

  9. php 计算两个文件的相对路径

    <?php /** * 计算两个文件的相对路径 */ function relative_path($path1, $path2) { $arr1 = explode('/', dirname( ...

  10. 泛型List集合转化为DateTable

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; name ...