Django - 模型层 - 下
Posted Alice的小屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django - 模型层 - 下相关的知识,希望对你有一定的参考价值。
一、单表 多表 介绍
单表
多表
多对一 多对多 一对一
===============================================
一对多:
Book
id title price publish_id
1 php 100 1
2 python 200 1
3 go 300 2
Publish
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 2
Author
id name age addr
1 alex 34 beijing
2 egon 29 nanjing
Book2Author
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 2
AuthorDetail (这个信息不经常查,为了效率,扩展)
id addr gender tel gf_name
1 beijing male 110 小花
2 nanjing male 911 红花
===============================================
总结:
一旦确定是 一对多
怎么建立一对多的关系?---》 关联字段 ,建在‘多’的表中
一旦确定是 多对多
怎么建立多对多的关系?---》 创建第三张表(关联表): id 和 两个关联字段
一旦确定是 一对一
怎么建立一对一的关系?---》 在两张表中的任意一张表中建立关联字段 + unique
Publish
Book
AuthorDetail
Author
Book2Author
=====================================================
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查询
。。。
。。。 后续补全
八、关联管理器
。。。
。。。后续补全
以上是关于Django - 模型层 - 下的主要内容,如果未能解决你的问题,请参考以下文章