首页 > 其他 > 详细

ORM之一对多外键的CRUD

时间:2021-04-29 09:46:06      阅读:30      评论:0      收藏:0      [点我收藏+]

外键的CRUD

一对多外键字段的crud

增 

传实际字段

models.Book.objects.create(title="三国",price=123,publish_id=1)

第二种放虚拟字段

pub_obj = models.Publish.objects.filter(pk=2).first()

models.Book.objects.create(title="三国",price=123,publish=pub_obj)

models.Publish.objects.filter(pk=1).delete() 级联删除,出版社这条删除了,那么关联的书籍中有出版社的记录也会删除

models.Book.objects.filter(pk=1).update(publish_id=2)   同样可以传虚拟字段一个publish对象

多对多外键字段的crud

本质:在操作第三张关系表

无法通过models.表名 摸到第三张表

book_obj = models.Book.objects.filter(pk=1).first()  拿到虚拟字段就相当于于到了第三张表。

book_obj.authors.add(1)  为书籍id为1的书籍绑定一个主键为1的作者。

多对多,那么一次可以添加多条, book_obj.authors.add(2,3)

同样支持放对象,查几个Author对象,然后add(author对象)

book_obj.authors.remove(author_obj1,author_obj2)

改 

book_obj.authros.set([1,2])  set()里面必须可迭代  1   1  , 1   2

book_obj.authros.set([3]) 回将原来所有的关系删掉,新建 1  3对应关系

同样也可以放对象。

清空

一本书永久下架了,清空这个书和作者的关系

book_obj.authors.clear()

ORM之一对多外键的CRUD

原文:https://www.cnblogs.com/gyxpy/p/14711318.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!