Django 多对多关系的增删改查
Django多对多数据增删改查
1.表结构及基本方法
1.表结构
# models.py
class Book(models.Model):
author = models.ManyToMany(to='author', relate_name='author')
"""
...字段
"""
class author(models.Model):
"""
...字段
"""
2.基本方法
# 增、删、改
add() # 增加
remove() # 删除表,只删一条数据
clear() # 清空表, 把所有关系的表全部清空 例如 book_obj.author.clear() 表示把当前书籍对象的所有作者全部清空
2.查
# views.py
# 获取主键id值为1的图书对象
book_obj = models.Book.object.filter(pk=1).first()
# 通过图书对象获取该图书对象下的所有作者
all_author = book_obj.author.all() # 这里的author字段是建表时候的字段名
# 结果为类似列表的querry_set列表对象
3.增
# views.py
author_list = [1, 2, 3, 4]
# 获取当前新增的图书对象
book_obj = models.Book.objects.create(
title=123,
price=123,
publish=123,
)
# 通过当前新增的图书对象在多对多关系表中添加对应关系字段
book_obj.author.add(*author_list)
# save()方法保存
book_obj.save()
# add()方法可以接收一个值,也可以用逗号隔开接收多个值
4.改
# views.py
# 修改图书作者为下方列表
author_list = [1, 2, 3, 4]
# 获取当前修改的图书对象
book_obj = models.Book.objects.filter(pk=1).first()
# 先清除当前图书的所有作者再添加
book_obj.author.clear()
book_obj.author.add(*authors_list)
book_obj.save()
# 直接修改
book_obj.author.set(*authors_list)