博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django基础之中介模型
阅读量:4495 次
发布时间:2019-06-08

本文共 1357 字,大约阅读时间需要 4 分钟。

什么是中介模型

中介模型针对的是ManyToMany(多对多)的时候第三张表的问题,

中介模型其实指的就是我们不通过Django创建第三张表,如果自己不创建第三张表,而是由django给我们创建,那就不存在中介模型

中介模型示例

普通的ManyToMany示例

1
2
3
4
5
6
class 
Book(models.Model):
    
title 
= 
models.CharField(max_length
=
32
)
    
authors 
= 
models.ManyToManyField(to
=
'Author'
)
 
class 
Author(models.Model):
    
name 
= 
models.CharField(max_length
=
32
)

这时候Django会自动帮我们创建地上那张表,如下:

中介模型小示例

1
2
3
4
5
6
7
8
9
10
11
class 
Book(models.Model):
    
''''''
    
title 
= 
models.CharField(max_length
=
32
)
    
authors 
= 
models.ManyToManyField(to
=
'Author'
,through
=
'Book2Author'
)
 
class 
Author(models.Model):
    
name 
= 
models.CharField(max_length
=
32
)
 
class 
Book2Author(models.Model):
    
book_id 
= 
models.ForeignKey(to
=
'Book'
)
    
author_id 
= 
models.ForeignKey(to
=
'Author'
)

这时候运行manage命令后就会生成一张第三张表,如下:

图中可以看出,Django创建ForeignKey的时候会在字段后自动添加'_id',所以,我们在写第三张表字段的时候就不用加_id了,如下:

1
2
3
4
5
6
7
8
9
10
11
class 
Book(models.Model):
    
''''''
    
title 
= 
models.CharField(max_length
=
32
)
    
authors 
= 
models.ManyToManyField(to
=
'Author'
,through
=
'Book2Author'
)
 
class 
Author(models.Model):
    
name 
= 
models.CharField(max_length
=
32
)
 
class 
Book2Author(models.Model):
    
book_id 
= 
models.ForeignKey(to
=
'Book'
)
    
author_id 
= 
models.ForeignKey(to
=
'Author'
)

中介模型与Django自建表的区别

1、中介模型的第三张表是自己创建的,所以可以自己任意添加额外的字段,而Django自创建的第三张表的字段是固定的

2、中介模型没有add,set  , remove,clear 方法

转载于:https://www.cnblogs.com/jimmyhe/p/10828642.html

你可能感兴趣的文章
Heimstaettenwegherb,村里最盛大的节日
查看>>
iOS 设置控件大小根据文本的大小
查看>>
MapReduce Design Patterns(7、输入输出模式)(十四)
查看>>
JS函数式编程【译】3.2 开发和生产环境
查看>>
火柴棍等式
查看>>
EasyUI中DataGrid构建复合表头
查看>>
[转]How to compile GDB for iOS!
查看>>
redis windows安装
查看>>
python有序字典OrderedDict()
查看>>
sql 检索字符串
查看>>
常用正则表达式
查看>>
HDU 4280 最大流Dinic算法优化
查看>>
八大排序算法
查看>>
why dropout work?
查看>>
小白成长记-----python实现注册的小程序
查看>>
Codeforces Round #151 (Div. 2)总结
查看>>
cin问题 分类: c++ 2014-08-02 2...
查看>>
PHP 中文字符串相关
查看>>
开始搭建 myBatis.net + Spring.net + asp.net mvc 3 + easyUI 开发平台
查看>>
vue-cli的项目中关于axios的全局配置
查看>>