首页
学习
活动
专区
圈层
工具
发布

Django笔记(十三)一对一,一对多,多对多之间的查询

目录 一对一 创建实例 choice类型如何获取具体值 如何获取一对一另一个表里面的数据 一对多 实体类 一对多代码(自己创建第三个表) 一对多代码(Django给你生成第三个表) 如何操作第三个表...表里面的数据的对象,获取到UserProfile表里面的数据,如何获取 一对多 实体类 男孩表 class Boy(models.Model): name = models.CharField...(自己创建第三个表) 有个相亲表都是外键,现在想要获取到和一个男孩相亲的女生有多少个,也就是男生是一个,女生是多个,典型的一对多的关系 # 查询到某一个男生 obj = Boy.objects.filter...连接 一对多代码(Django给你生成第三个表) 我们有了男孩表,女孩表,之前我们写一个相亲表,让男孩表和女孩表进行关联。现在我们不写第三个表了,但是还想让两个表进行关联,我们可以这样写。...给你生成的,就是通过ManyToManyField() 这个 如何操作第三个表 这个Django给生成的第三个表,在model文件里面是没有的,那么我们要如何操作这个表,也就是实现对这个表的增删改查

3.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    多表间的关系-一对多-多对多-一对一-外键约束

    多表间的关系-一对多-多对多-一对一-外键约束 1. 表关系概述 现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。...那么我们在设计表的时候,就应该体现出表与表之间的这种关系!...表和表之间的关系分成三种: 一对一 (老公和老婆) 一对多 (部门和员工, 用户和订单) 多对多 (学生和课程) 例如: 双11当天,马哥和东哥两个用户分别在淘宝上下了一些订单,已知马哥下了...一对多 一对多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品 一对多建表原则: 在从表(多方)创建一个字段,指向主表(一方)的主键.我们把这个字段称之为外键. 3....多对多 多对多(m:n) 例如:老师和学生,学生和课程,用户和角色 多对多关系建表原则: 需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。 4.

    7.8K20

    Django 标签筛选的实现代码(一对多、多对多)

    实现的目标(一对多) 实现针对课程实现:课程类型、难度级别、是否隐藏三个方式的筛选 每一个视频文件有针对一个课程类型、一个难度级别、是否隐藏 设计数据库如下: class VideoType(models.Model...,通过a标签中的数字控制后台筛选操作 实现的目标(多对多) 实现针对课程实现:课程方向、课程类型、难度级别三个方式的筛选 其中每个课程方向中包含有多个课程类型,选择课程方向后,筛选课程方向包含的所有课程类型...每一个视频文件有针对一个课程类型、一个难度级别 设计数据库如下,在一对多的基础上增加了一个多对多的课程方向表: class VideoGroup(models.Model): Video_group...0 # 难度这边跟上面的多对多没有关联,与一对多的情况时一样 if dif_id == 0: pass else: condition['Video_dif_id'] = dif_id VideoDif_list...标签筛选的实现代码(一对多、多对多),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    2.3K30

    sql中一对多,多对一,一对一关系的解析

    1、一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多。...2、多对一:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里学生和班主任的关系就是多对一。...3、一对一:比如说一个班级有很多学生,他们分别有不同的学号。一个学生对应一个学号,一个学号对应一个学生;通过学号能找到学生,通过学生也能得到学号,不会重复。这里学生和学号的关系就是一对一。...4、多对多:比如说一个班级有很多学生,他们有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。

    3.7K20

    【Mybatis】常见面试题:处理表与表之间的关系:多对一,一对多

    表的员工与部门有对应关系,实体类之间也有对应的关系 多对一 在员工实体类中加入实体类部门属性 Dept dept; 查询员工信息以及员工所对应的部门信息 方式一:级联方式处理映射关系 多对一的映射关系 * property:表示需要处理的多对一关系的属性名 * javaType:表示该属性的类型 select * from t_dept where did =#{did} 一对多...在部门实体类中加入员工类构成的集合 private List emps; 方式一:collection collection:用来处理一对多的映射关系 property:处理一对多关系的属性...-- collection:用来处理一对多的映射关系 property:处理一对多关系的属性 ofType:表示该属性对应的集合中存储的数据的类型

    69610

    Mybatis表之间的关系分析 注解开发 @One @Many介绍 一对一 一对多

    表之间的关系分析 表之间的关系有几种: 一对多 多对一 多对多 mybatis中的多表查询: 一对多 实例:用户和账户 一个用户可以有多个账户 一个账户只能属于一个用户(多个账户也可以属于同一个用户...) 步骤: 1.建立两张表:用户表,账户表 让用户表和账户表之间具备一对多的关系:需要使用外键在账户表中添加 2.建立两个实体类:用户实体和账户实体类 让用户和账户的实体类能体现出来一对多的关系...--一对一的关系映射:配置封装user的内容 javatype指定封装到哪个对象--> <association property="user" column="uid"...一个角色可以赋予多个用户 步骤: 1.建立两张表:用户表,账户表 让用户表和角色表之间具备多对多的关系:需要使用中间表,中间表中包含各自的主键,在中间表中是外键。...2.建立两个实体类:用户实体和账户实体类 让用户和角色的实体类能体现出来多对多的关系 各自包含对方一个集合引用 3.建立两个配置文件 用户的配置文件 角色的配置文件 4.实现配置:

    3.1K20

    JPA规范:一对多、一对一、多对多的双向关联与级联操作以及JPA联合主键

    一、一对多双向关联与级联操作: 以订单类和订单商品类为例: 多的一方为关系维护端,关系维护端负责外键记录的更新,关系被维护端是没有权利更新外键记录。...具体配置步骤可以参看这篇博客:https://blog.csdn.net/a745233700/article/details/81415550 二、一对一双向关联与级联操作: 以身份证类和人为例: 1...(new IDcard("448xxx1990xxxx1234")); em.persist(person); } 三、多对多双向关联与级联操作: 以教师类和学生类为例: 1、教师类: //...: //JPA多对多测试类:没有建立关系联系的添加 @Override public void jpaTest() { //没有建立关系联系的添加 em.persist(new Student...:删除对象:只删除教师 //先解除学生与老师的关系,再删除教师对象 @Override public void jpaTest() { Student student=em.find(Student.class

    3.8K30

    观察者模式:对象间的一种一对多的依赖关系

    0x01:观察者模式入门 观察者模式[ 又称发布(publish)-订阅(Subscribe)模式 ],它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新...其实就是一种通知机制,让发送通知的一方(被观察方)和接收通知的一方(观察者)能彼此分离,互不影响。UML类图如下: ?...changed; } public synchronized int countObservers() { return obs.size(); } } 可以看出来与自己的设计大体一致...不过也不能不感叹JDK的设计者考虑的问题还是不自己考虑的多。JDK多设计了一个标识位,同时考虑了线程安全问题。 0x03:观察者模式的思考 从抽象被观察者代码看,里面定义了一个容器存放观察者。...如果使用观察者模式处理这样一个业务场景:观察者非常多,而且观察者的update()方法调用时间可能非常长。那一定出现业务延时的问题,这样的话就不在适合使用观察者模式了。

    1.4K30

    Django——模型Model

    ORM简介 对象关系映射(Object Relation Mapping)实现了关系和数据库之间的映射,隐藏了关系数据访问的细节,不需要再编写SQL语句 创建模型 在models.py的文件中创建类 继承...OK Django默认采用sqlite3数据库,最终会生成如下数据表,其中自定义的表命名规则是(应用名称模型类名) DATABASES = { 'default...升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常: TypeError: init() missing 1 required positional argument...models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True) on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为...=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理) on_delete=models.SET, # 删除关联数据

    97750

    JAVA设计模式18:观察者模式,建立了一对多的依赖关系

    一、什么是观察者模式 观察者模式(Observer Pattern)是一种行为型设计模式,它建立了一种一对多的依赖关系,让多个观察者对象同时监听一个被观察者对象的状态变化,当被观察者对象的状态发生变化时...ConcreteObserver(具体观察者):它是观察者的具体实现,实现了观察者的更新方法,以便在接收到被观察者的通知时进行相应的操作。...观察者模式的核心思想是将观察者和被观察者解耦,使它们之间的依赖关系松散,从而实现对象间的松耦合。...订阅者通过订阅感兴趣的事件,当事件发生时,发布者会通知所有订阅者,使它们能够响应相应的事件。 数据库触发器:当数据库中的数据发生改变时,触发器可以通知相关的观察者进行相应的操作。...观察者可以是其他数据库,或者是应用程序中的其他模块,以实现数据的同步和一致性。 股票交易系统:在股票交易系统中,经纪人和投资者之间的关系可以使用观察者模式来建模。

    65740

    JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法

    我们知道,在设计一个Java bean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对多的关系,那么这些表的关系如何表示呢...首先在建立数据库的时候就应该建立这样的对应关系。...一对多 ,只要建立两个表就能建立这样的关系,因为你可以把多方的那个表设置一个Foreign Key 属性 ,下面是一个部门和员工的表结构关系 在MySQL 数据库上应该这样建立表结构: create table...public List findDepts() { return findDepts(true); } } 多对多的关系 下面以老师和学生的关系来说明这个结构...注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。

    4.3K70

    【Python全栈100天学习笔记】Day41 Django深入理解框架

    'django.db.backends.postgresql':BSD许可证下发行的开源关系型数据库产品。...字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库中与字段对应的列,verbose_name则设置了Django后台管理系统中该字段显示的名称...,所以也能通过部门反向查询该部门的员工(从一对多关系中“一”的一方查询“多”的一方),反向查询属性默认的名字是类名小写_set(如上面例子中的emp_set),当然也可以在创建模型时通过ForeingKey...ManyToManyField属性 symmetrical:是否建立对称的多对多关系。 through:指定维持多对多关系的中间表的Django模型。...throughfields:定义了中间模型时可以指定建立多对多关系的字段。 db_table:指定维持多对多关系的中间表的表名。

    2.9K30

    Django 2.x实战(02) - 深入模型

    'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages...':SQLite嵌入式数据库 'django.db.backends.postgresql':BSD许可证下发行的开源关系型数据库产品 'django.db.backends.mysql':转手多次目前属于甲骨文公司的经济高效的数据库产品...'django.db.backends.oracle':甲骨文公司的旗舰关系型数据库产品 其他的配置可以参考官方文档中数据库配置的部分。...类型,CharField对应数据库的varchar类型,DecimalField对应数据库的decimal类型,ForeignKey用来建立多对一外键关联。...字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库中与字段对应的列,verbose_name则设置了Django后台管理系统中该字段显示的名称

    55030

    Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08

    目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件...组件钩子函数 forms 校验最终版 forms 校验源码分析 django 操作 cookie 与 session cookie 工作原理 session 工作原理 如何操作 cookie 服务端常见的...cookie 操作 小练习 如何操作 session 设置 session 获取 session 删除 session 设置 session 超时时间 表模型类多对多关系的三种创建方式 关系表可能还会有一个关系创建时间字段...:自己创建第三张表,利用 ManyToManyField 在某张表指定关联关系 优点:可以自定义字段,依旧支持基于双下划线、对象的反向查询,可扩展性高 多对多字段的方法不支持了(add,set,remove...orm 书籍表和作者表的多对多关系是通过 Book2Author 来记录的 # through fields 告诉 django orm 记录关系时用过 Book2Author 表中的 book 字段

    3.2K20
    领券