Django-多对多增删改查

Django多对多数据增删改查

1.表结构及基本方法

  • 表结构
    •  1 # models.py
       2 class Book(models.Model):
       3     author = models.ManyToMany(to='author', relate_name='author')
       4     """
       5     字段
       6     """
       7     
       8 class author(models.Model):
       9     """
      10     字段
      11     """
  • 基本方法
1 # 增、删、改
2 add() # 增加
3 remove() # 删除表,只删一条数据
4 clear() # 清空表, 把所有关系的表全部清空 例如 book_obj.author.clear() 表示把当前书籍的所有作者全部清空
      • 1 # views.py
        2 
        3 # 获取主键id值为1的图书对象
        4 book_obj = models.Book.object.filter(pk=1).first()
        5 
        6 # 通过图书对象获取该图书对象下的所有作者
        7 all_author = book_obj.author.all()  # 这里的author字段是建表时候的字段名
        8 
        9 # 结果为类似列表的querry_set列表对象
      •  1 # views.py
         2 author_list = [1, 2, 3, 4]
         3 # 获取当前新增的图书对象
         4 book_obj = models.Book.objects.create(
         5             title=123,
         6             price=123,
         7             publish=123,
         8         )
         9 
        10 # 通过当前新增的图书对象在多对多关系表中添加对应关系字段
        11 book_obj.author.add(*author_list)
        12 # save()方法保存
        13 book_obj.save()
        14 
        15 # add()方法可以接收一个值,也可以用逗号隔开接收多个值
      •  1 # views.py
         2 
         3 # 修改图书作者为下方列表
         4 author_list = [1, 2, 3, 4]
         5 
         6 # 获取当前修改的图书对象
         7 book_obj = models.Book.objects.filter(pk=1).first()
         8 
         9 # 先清除当前图书的所有作者再添加
        10 book_obj.author.clear()
        11 book_obj.author.add(*authors_list)
        12 book_obj.save()
        13 
        14 # 直接修改
        15 book_obj.author.set(*authors_list)
      • 1 # views.py
        2  
        3 # 直接删除数据
        4 .delete()
        5  
        6 # 删除外键关系:数据还在
        7 remove(t1,t2,t3)
原文地址:https://www.cnblogs.com/z-han/p/12831085.html