学习笔记,仅供参考 文章目录 数据表关联关系映射 多对多映射 查询 添加数据 数据表关联关系映射 多对多映射 多对多表现了对象之间多对多的复
学习笔记,仅供参考
文章目录
- 数据表关联关系映射
- 多对多映射
- 查询
- 添加数据
数据表关联关系映射
多对多映射
多对多表现了对象之间多对多的复杂关系,如: 每个人都有不同的学校(小学,初中,高中,…),每个学校都有不同的学生。
- 语法
属性 = 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
book.authors.all()
#获取 book 对应的所有的author的信息
book.authors.filter(age__gt=50)
#获取book对应的author中年龄大于50岁的作者的信息
- 通过 author 查询对应的所有的books
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所有并联的书
添加数据
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到王老师名下