推广 热搜:   公司  快速  企业  中国  设备  上海    未来  行业 

ORM 创建manytomay的三种方法 反向查询 和一些 双下方法版学员管理系统3

   日期:2024-11-01     移动:http://weazh.bhha.com.cn/quote/99.html

ORM   创建manytomay的三种方法  反向查询 和一些 双下方法版学员管理系统3

三种方式创建多对多外键方式及其优缺点。

外键的查询和使用

1外键的创建:

在数据库表中的表现形式

如何连表查询和使用

表里边:  student_obj.cid_id=Class对像.id  ;   Student_obj.cid = Class对象     

如何继续往查外键对应的数据      用查出来的     对象.cid.属性名   的方法来查                   cid就表示Class表中的一个对象,即某一条记录

增加数据的写法

 如何反向从被外键关联的对象中找到与他关联的数据            注意:当设置了related_name:  时候不能用此方法  默认用  related_name的值

当设置了related_name 时可以这样查找

查找使用方法

一对一正向查找

自动创建的第三章表,多对多关联表,所以不能通过ORM单独查询或者操作那个自动出现的表格

第三张表是独立的表,可以通过django ORM单独的对他进行去查找和更新       

当想扩展第三那张,多对多的表进行单独查询或者操作,修改的时候用第三种方式,‘

否则一般用第二种

给第三个表加数据

正向查询(由学生表查询班级表)

查询学生的班级信息

反向查询(由班级表查询学生表)

查询班级的学生信息

如果不在外键的字段中设置related_name的话,默认就表名_set

如果设置了related_name="students",反向查询时可直接使用students进行反向查询。

表结构设计

正向查询(由学生信息表查询学生详情表)

反向查询(由学生详情表反向查询学生信息表)

正向查询(由老师表查询班级表)

反向查询(由班级表反向查询老师表)

"关联管理器"是在一对多或者多对多的关联上下文中使用的管理器。

它存在于下面两种情况:

  • 外键关系的反向查询
  • 多对多关联关系
  • create()

    创建一个新的对象,保存对象,并将它添加到关联对象集之中,返回新创建的对象。

    创建一个新的班级对象,保存对象,并将它添加到关联对象集之中。返回新创建的对象:

    上面的写法等价于下面的写法,但是比下面的这种写法更简单。

    add()

    把指定的model

    对象添加到关联对象集中。即多多对应的那张表中去

    添加对象

    添加id

    add()括号中被传入的内容可以是   对象,也可以是id 值 

     

    set()  这个是设置(可以是对某些值的更改)  

    更新model对象的关联对象。  set 传入的列表对象不用打散  直接传入就可  add()  传入的需要打散

    remove()

    从关联对象集中移除执行的model对象

    对于ForeignKey对象,这个方法仅在null=True时存在

    clear()

    从关联对象集中移除一切对象。

    同理,对于ForeignKey对象,这个方法仅在null=True时存在。

  • 对于所有类型的关联字段,add()、create()、remove()和clear(),set()都会马上更新数据库。换句话说,在关联的任何一端,都不需要再调用save()方法。
  • 使用场景:

    他是用于跨表查询

    正向使用:

    要使用外键名__对应表的字段名   的方法来查找

    反向使用

    使用外键的related_name设置的名字 __字段名(关联表的字段名) 的方法

    表的设计详见下图

    在这之前我们所有的跨表查询都是基于对象的查询。

    比如:

    注意,双下方法将写的内容作为条件放到筛选括号里边的,  如    

     models.Class.objects.filter(students__sname__contains="龙")  查找名字中有龙的学生    注意  students  是Class一个外键,  通过他关联到Student 表  

    Django还提供了一种直观而高效的方式在查询中表示数据表之间的关联关系,它能自动确认 SQL JOIN 关系。

    需要做跨关系查询时,就可以使用两个下划线来链接模型(model)间关联字段的名称,直到最终链接到你想要的 model 为止。

     

    本文地址:http://mdekt.bhha.com.cn/quote/99.html    康宝晨资讯 http://mdekt.bhha.com.cn/ , 查看更多

    特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


    相关行业动态
    推荐行业动态
    点击排行
    网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号