外键字段的增删改查
一对多与一对一
多对多
# 针对一对多 一对一字段操作
# 增
# 直接录入相关的主键字段数据
# models.Book.objects.create(title='三国演义',price=123.32,publish_id=1)
# publish_obj = models.Publish.objects.filter(pk=2).first()
# models.Book.objects.create(title='水浒传',price=345.78,publish=publish_obj)
# 改
# models.Book.objects.filter(pk=2).update(publish_id=2)
# publish_obj = models.Publish.objects.filter(pk=1).first()
# models.Book.objects.filter(pk=3).update(publish=publish_obj)
# 针对多对多字段操作
# 增
# book_obj = models.Book.objects.filter(pk=2).first()
# book_obj.authors.add(1) # 书籍对象点多对多虚拟字段就相当于在操作第三张关系表
# book_obj.authors.add(1,2) #
# author_obj = models.Author.objects.filter(pk=1).first()
# author_obj1 = models.Author.objects.filter(pk=2).first()
# book_obj.authors.add(author_obj)
# book_obj.authors.add(author_obj,author_obj1)
"""
add
在第三张关系表中添加数据
括号内既可以传主键字段也可以传数据对象 并且都支持传多个
"""
# 改
# book_obj = models.Book.objects.filter(pk=2).first()
# book_obj.authors.set([1,])
# book_obj.authors.set([1,2])
# author_obj = models.Author.objects.filter(pk=1).first()
# author_obj1 = models.Author.objects.filter(pk=2).first()
# book_obj.authors.set([author_obj])
# book_obj.authors.set([author_obj,author_obj1])
"""
set
在第三张关系表中修改数据
括号内需要传一个可迭代对象
可迭代对象里面的元素既可以传主键字段也可以传数据对象 并且都支持传多个
"""
# 删
# book_obj = models.Book.objects.filter(pk=2).first()
# book_obj.authors.remove(1)
# book_obj.authors.remove(1,2)
# author_obj = models.Author.objects.filter(pk=1).first()
# author_obj1 = models.Author.objects.filter(pk=2).first()
# book_obj.authors.remove(author_obj)
# book_obj.authors.remove(author_obj, author_obj1)
"""
remove
在第三张关系表中删除数据
括号内既可以传主键字段也可以传数据对象 并且都支持传多个
"""
# 清空数据
book_obj = models.Book.objects.filter