Django 多对多关系的增删改查

Posted 17vv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

以上是关于Django 多对多关系的增删改查的主要内容,如果未能解决你的问题,请参考以下文章

django数据库操作-增删改查-多对多关系以及一对多(外键)关系

转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系

TP5的多对多模型,以及中间表,已经中间表的增删改查

TP5的多对多模型,以及中间表,已经中间表的增删改查

基于表关系的增删改查

多对多表的增删改查与drf的分页