当前位置 : 主页 > 编程语言 > python >

Django(part35)--多对多映射

来源:互联网 收集:自由互联 发布时间:2022-06-15
学习笔记,仅供参考 文章目录 ​​数据表关联关系映射​​ ​​多对多映射​​ ​​查询​​ ​​添加数据​​ 数据表关联关系映射 多对多映射 多对多表现了对象之间多对多的复

学习笔记,仅供参考



文章目录

  • ​​数据表关联关系映射​​
  • ​​多对多映射​​
  • ​​查询​​
  • ​​添加数据​​



数据表关联关系映射



多对多映射



多对多表现了对象之间多对多的复杂关系,如: 每个人都有不同的学校(小学,初中,高中,…),每个学校都有不同的学生。



  • 语法
#在关联的两个类中的任意一个类中,增加:
属性 = models.ManyToManyField(Entry)
  • 示例
#一个作者可以出版多本图书
#一本图书可以被多名作者同时编写

class Author(models.Model):
name = models.CharField('作家', max_length=50)

class Book(models.Model):
title = models.CharField('书名', max_length=50)
authors = models.ManyToManyField(Author)



查询



  • 通过 book 查询对应的所有的 authors
#可以通过authors表示对应所有Author的查询对象

book.authors.all()
#获取 book 对应的所有的author的信息

book.authors.filter(age__gt=50)
#获取book对应的author中年龄大于50岁的作者的信息



  • 通过 author 查询对应的所有的books
#author会生成一个属性 book_set 用于对book查询对象进行相关操作
author.book_set.all()
author.book_set.filter()
author.book_set.create(...) # 创建新书并联作用author
author.book_set.add(book) # 添加已有的书为当前作者author
author.book_set.clear() # 删除author所有并联的书
author.book_set.remove() # 删除所author所有并联的书



添加数据



from bookstore import models
author1 = models.Author.objects.create(name='黄老师')
author2 = models.Author.objects.create(name='王老师')

book1 = author1.book_set.create(title="Python")
#创建新书并关联黄老师
author2.book_set.add(book1)
#添加Python到王老师名下

上一篇:Django(part39)--制作图书管理系统
下一篇:没有了
网友评论