Django - 模型层 - 下

一、单表 多表 介绍

单表

多表    多对一  多对多  一对一

===============================================

一对多:Book    id  title   price     publish_id    1    php     100       1    2    python  200       1    3    go      300       2Publish    id   name      email   addr    1   人名出版社   @      北京    2   沙河出版社   @      沙河

一旦确定是 一对多    怎么建立一对多的关系?---》 关联字段 ,建在‘多’的表中

查询python这本书的出版社的邮箱    (子查询)    select email from Publish where id = (        select publish_id from Book where title = ‘python‘    )

===============================================

多对多:(彼此一对多)Book    id  title   price     publish_id    1    php     100       1    2    python  200       1    3    go      300       2Author    id  name  age   addr    1   alex   34   beijing    2   egon   29   nanjingBook2Author    id  book_id  author_id    1     2        1    2     2        2    3     3        2

alex 出版过的书籍名称 (子查询:以一个查询的结果作为下一个查询的条件)    select title from Book where id in (        select book_id from Book2Author where author_id = (            select id from Author where name = ‘alex‘        )    )

===============================================

一对一:Author    id  name  age   authordetail_id(unique)  (一定要加)    1   alex   34     1    2   egon   29     2AuthorDetail (这个信息不经常查,为了效率,扩展)   id  addr    gender  tel  gf_name   1   beijing   male   110   小花   2   nanjing   male   911   红花

===============================================

总结:一旦确定是 一对多    怎么建立一对多的关系?---》 关联字段 ,建在‘多’的表中一旦确定是 多对多    怎么建立多对多的关系?---》 创建第三张表(关联表): id 和 两个关联字段一旦确定是 一对一    怎么建立一对一的关系?---》 在两张表中的任意一张表中建立关联字段 + unique

PublishBookAuthorDetailAuthorBook2Author=====================================================create table publish(    id int primary key auto_increment,    name varchar(20));create table book(    id int primary key auto_increment,    title varchar(20),    price decimal(8,2),    pub_date date,    publish_id int,    foreign key (publish_id) references publish(id));create table authordetail(    id int primary key auto_increment,    tel varchar(20));create table author(    id int primary key auto_increment,    name varchar(20),    age int,    authordetail_id int unique,    foreign key (authordetail_id) references authordetail(id));create table book2author(    id int primary key auto_increment,    book_id int,    author_id int);

=====================================================

二、创建模型

三、添加表记录

四、基于对象得跨表查询

五、基于双下划线得跨表查询

六、聚合查询与分组查询

七、F查询与Q查询

。。。

。。。  后续补全

八、关联管理器

。。。

。。。后续补全

原文地址:https://www.cnblogs.com/alice-bj/p/9078267.html

时间: 2024-11-04 22:46:56

Django - 模型层 - 下的相关文章

Django模型层之单表操作

Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql.oracle.Microsoft SQL Server等. 如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库,详见图一^①^ 但是直接编写原生sql语句会存在两方面的问题,严

Django模型层之更多操作

Django模型层之更多操作 一 .ORM字段 1.1 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在-2147483648 to 2147483647. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. DateField 日期字段,日期格式 YYYY-MM-DD,相当于Python中的d

03 Django模型层: 常用(非常用)字段和参数

Django模型层: 常用(非常用)字段和参数 1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. DateField 日期字段,日期格式? YYYY-MM-DD,相当于Python中的

肆拾捌 --- 模型层下

django模板层下 一.聚合查询与分组查询 1.1 聚合 ? 聚合函数是sql的基本函数,会对一组值执行计算并返回单一的值. from django.db.models import Avg,Sun,Max,Min,Count res1 = models.Book.objects.all().aggregate(Avg('price')) res2 = models.Book.objects.all().aggregate(Max('price')) res3 = models.Book.ob

一 Django模型层简介

模型 django提供了一个强大的orm(关系映射模型)系统. 模型包含了你要在数据库中创建的字段信息及对数据表的一些操作 使用模型 定义好模型后,要告诉django使用这些模型,你要做的就是在配置文件中的INSTALLED_APPS中添加模型所在的应用名称 字段类型 模型中的每个字段都是Field类相应的实例,django根据Field类型来确定以下信息: 列类型,告知数据库要存储那种数据 渲染表单时使用的默认HTML widget 验证,被用在admin和表单中 通用字段参数(常用) nul

Django模型层(1)

ORM简介: MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是"对象-关系-映射"的简称. 单表操作 创建模型: 创建名为book的app,在book下的model.py中创建模型 from django.db import models # Create your models here.

Django基础五之django模型层(一)单表操作

目录 一 ORM简介 二 单表操作 一.创建表 创建模型 2 更多字段和参数 3 settings配置 4.自定义字段(了解) 二.添加表纪录 方式1 方式2(用的多) 方式3:批量插入 三.查询表纪录 查询API(都是重点) 基于双下划线的模糊查询 四.删除表纪录 五.修改表纪录 三 章节作业 1 图书管理系统 2 查询操作练习 四 xxx 本节目录 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,

Django基础五之django模型层(二)多表操作

目录 一 创建模型 关于db_column和verbose_name 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询(基于join实现的) 进阶练习(连续跨表) 五 聚合查询.分组查询.F查询和Q查询 查询练习 F查询与Q查询 F查询 Q查询 六 ORM执行原生sql语句(了解) 执行原生查询 直接执行自定义SQL 七 Python脚本中调用Django环境(django外部脚本使用models) 八 补充多个app配置models 本节目录 一 创建模型 表和表之间的关系

06 Django模型层(1)

知识预览 ORM简介 单表操作 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是“对象-关系-映射”的简称. #sql中的表 #创建表: CREATE TABLE employee( id INT PRIMARY KEY auto_increment , name VARCHAR (20),