Django数据库多对多数据关系
2017-10-10 19:39
169 查看
本文主要描述Django数据中一对一的数据关系,创建app等配置不再赘述。
Django操作数据库,使用ORM
使用默认数据库:sqlite
操作在models.py文件中完成。
多对多关系
举例:一个出版社发表多个文章,一篇文章也可以对多个出版社发表
ManyToManyFiled():关联两个表的函数,但是函数的设置位置,在模型中任选一个即可,不能在两个模型中都设置此函数。
注意点:
1)注意ManyToManyField()的设置位置;该实例中设置了Article模型中,在绑定两张表的时候,利用Article的对象a1进行绑定的,a1.publication.add()。但是不能使用Publication的对象p1进行绑定(p1.article.add())。
两张表之间的相互查询关系
查询a1这篇文章所属的出版社有哪些
print a1.publication.all()
查询某一出版社,所包含的所有文章有哪些
print p1.article_set.all()
Django操作数据库,使用ORM
ORM:关系映射对象,把传统的SQL语句封装成了类和对象的形式,在操作表中的记录时,就像在操作类和对象一样。
使用默认数据库:sqlite
操作在models.py文件中完成。
多对多关系
举例:一个出版社发表多个文章,一篇文章也可以对多个出版社发表
ManyToManyFiled():关联两个表的函数,但是函数的设置位置,在模型中任选一个即可,不能在两个模型中都设置此函数。
class Publication(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=30, null=True) # 出版社名称 class Meta: db_table = 'Publication' def __unicode__(self): return 'Publication-Name: %s' % self.title class Article(models.Model): id = models.AutoField(primary_key=True) headline = models.CharField(max_length=100, null=True) # 让文章关联出版社 publication = models.ManyToManyField(Publication) class Meta: db_table = 'Article' def __unicode__(self): return 'Article-Name: %s' % self.headline
创建完数据库模型之后,就需要创建数据库变更文件,应用数据库变更文件创建表的操作。 创建数据库变更文件:python manage.py makemigrations 应用数据库变更文件:python manage.py migrate 可以使用SQLite可视化工具查看已经建立成功的数据库表 由于未进行其他配置,所以只能在shell环境下,对数据库进行操作。 进入shell环境的命令:python manage.py shell
注意点:
1)注意ManyToManyField()的设置位置;该实例中设置了Article模型中,在绑定两张表的时候,利用Article的对象a1进行绑定的,a1.publication.add()。但是不能使用Publication的对象p1进行绑定(p1.article.add())。
两张表之间的相互查询关系
查询a1这篇文章所属的出版社有哪些
print a1.publication.all()
查询某一出版社,所包含的所有文章有哪些
print p1.article_set.all()
相关文章推荐
- Django中数据库的数据关系:一对一,一对多,多对多
- Django数据库一对一数据关系
- Django数据库一对多数据关系
- django中使用mongoengine保存字典结构的数据到数据库。
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
- 数据库系统原理(4)--数据依赖与关系模式规范化
- 数据库系统原理复习题(四)——关系数据理论
- Oracle 数据库/表空间/数据文件之间的关系
- EF5+MVC4系列(1) Podwerdesigner15.1设计数据库;PD中间表和EF实体模型设计器生成中间表的区别;EF5.0 表关系插入数据(一对多,多对多)
- 数据库、表空间、数据文件、表、数据之间关系
- 转载Django–模型数据的模板呈现(多对多关系增删查改)
- 本文是笔者根据数据库编程经验,利用C++语言的模板、继承、授权、多态等面向对象特性,借鉴命令模式,实现了对象在关系数据中的存储,降低应用系统与数据库之间的耦合,提高开发效率。
- 【数据库系统概论】-关系数据理论
- 如何将Bitcoin比特币区块链数据导入关系数据库
- 将选定的 OmniFind 分析结果存储到关系数据库中以便进行报告和数据挖掘
- django数据查询指定数据库
- django中数据库导入导出json数据
- 数据库(四)关系数据理论
- 用户与我的关系数据库设计与数据传递
- Oracle 数据库 数据文件 表 表空间 用户的关系