zoukankan      html  css  js  c++  java
  • ORM之一对多外键的CRUD

    外键的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()

    看十遍不如自己写一遍!巩固基础,纵横开拓!
  • 相关阅读:
    Linux 内核中的 Device Mapper 机制
    阿里云 Angular 2 UI框架 NG-ZORRO介绍
    Docker容器 暴露多个端口
    修改docker容器的端口映射
    Ubuntu Docker安装
    Docker容器技术的PaaS云平台架构设计***
    scala 学习笔记三 闭包
    scala 学习笔记二 方法与函数
    scala 学习笔记一 列表List
    Python3 写Windows Service服务程序
  • 原文地址:https://www.cnblogs.com/gyxpy/p/14711318.html
Copyright © 2011-2022 走看看