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)
-
-