首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当外键不在当前模型中时,如何获取模型的查询集的值?

当外键不在当前模型中时,可以通过使用双下划线(__)来获取模型的查询集的值。

具体步骤如下:

  1. 首先,确定当前模型与外键模型之间的关系。假设当前模型为ModelA,外键模型为ModelB,且ModelA中有一个外键字段指向ModelB。
  2. 使用双下划线(__)来访问外键模型的字段。例如,如果要获取ModelA的查询集中每个对象的外键模型ModelB的某个字段的值,可以使用以下语法:
  3. 使用双下划线(__)来访问外键模型的字段。例如,如果要获取ModelA的查询集中每个对象的外键模型ModelB的某个字段的值,可以使用以下语法:
  4. 其中,'foreign_key'是ModelA中的外键字段名,'field'是ModelB中的字段名。
  5. 如果需要进一步过滤查询集,可以在上述语法的基础上添加过滤条件。例如,如果要获取ModelA的查询集中外键模型ModelB字段值为特定值的对象,可以使用以下语法:
  6. 如果需要进一步过滤查询集,可以在上述语法的基础上添加过滤条件。例如,如果要获取ModelA的查询集中外键模型ModelB字段值为特定值的对象,可以使用以下语法:
  7. 其中,'value'是要匹配的特定值。

这样,就可以通过双下划线来获取模型的查询集的值,即使外键不在当前模型中。

请注意,以上答案是基于一般情况下的假设,具体实现可能会因不同的编程语言、框架或库而有所差异。对于具体的实现细节,建议参考相关编程语言或框架的官方文档或相关资源。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django 模型查询2.3

简介 查询表示从数据库获取对象集合 查询可以含有零个、一个或多个过滤器 过滤器基于所给参数限制查询结果 从Sql角度,查询和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...):一个对象构成一个字典,然后构成一个列表返回 写法: filter(1=1,2=2) 等价于 filter(1=1).filter(2=2) 返回单个方法 get():返回单个满足条件对象...,[0:1].get()引发DoesNotExist异常 查询缓存 每个查询都包含一个缓存来最小化对数据库访问 在新建查询集中,缓存为空,首次对查询求值,会发生数据库查询,django会将查询结果存在查询缓存...,但是如果这部分不在缓存,那么接下来查询返回记录将不会被缓存,这意味着使用索引来限制查询将不会填充缓存,如果这部分数据已经被缓存,则直接使用缓存数据 字段查询 实现where子名,作为方法filter...()、exclude()、get()参数 语法:属性名称__比较运算符= 表示两个下划线,左侧是属性名称,右侧是比较类型 对于,使用“属性名_id”表示原始 转义:like语句中使用了%

2.3K20

【实战】Tp5+小程序(二)--接口编写

–定义关联与查询关联 model/Banner.php // 创建关联方法 public function items() { // 参数1:关联模型模型名 // 参数2:关联模型...from=1 =》 图片来自当前项目,存储是 相对路径 from=2 =》 图片来自网络,存储是 绝对路径 即: from=1 ,才需要对 url 进行相关操作。...有表`belongsTo`无表 无表`hasOne`有表 theme – (topic_img_id, head_img_id) – 表中有 (对应 image 表 id...) // 参数4: 关联表(关联当前模型) return $this->belongsToMany('Product', 'theme_product', 'product_id'...8-18 最近新品接口编写 1.TP5 框架自带时间更新操作,使用模型操作数据库插入记录,自动带上create_time; 更新操作自动带上updated_time;删除自动带上delete_time

7.9K62

Laravel学习记录--Model

middleTable:连接两张表中间表 如不指定,默认拼接规则为stu_mclass(这里没有复数形式) foreignPivotKey:当前模型在中间表字段(当前模型) 如不指定,默认拼接规则为...throuth:中间模型类 firstKey:中间模型类与当前模型,如果不指定,在本例按照默认拼接规则为 当前模型类名_id;这里就是(Countrie_id)secondKey:中间模型类与关联模型关联...”当前表_id“ $relatedPivotKey:中间表关联ID字段 默认通过$name+’_id’组合表示即morphs 生成ID字段,另一字段 $parentKey:当前模型主键 $relatedKey...$name复数形式 $foreignPivotKey:关联模型在中间表,默认拼接规则为”当前表_id“ $relatedPivotKey:中间表关联ID字段另一; 注意这里定义反向关联,foreignPivotKey...,并且电话id = 1; } 关联数据计数 如果你只想统计结果数并不需要加载数据,那么可以使用withCount方法,此方法会在你结果模型添加一个{关联名_count}字段 如查询每个用户号码数量

13.5K20

ThinkPHP6.0学习笔记-模型操作

模型类定义一个获取器(一个字段可以对应一个模型特殊方法获取器方法)),获取器就会对控制端字段查询进行获取并进行自定义处理方法。...$user; 在使用查找范围scope()后,指定使用find() select()查询; 在模型查询封装方法可以使用包括修改器、获取器等在内模型操作方法。...,搜索器无论定义了多少,只需要一次调用,查询范围如果需要组合查询时候就需要多次调用 ---- 模型数据 数据直接继承collection类,和数据数据方式一样、操作一样。...user_id 主表主键与附属表进行关联 一对一关联 hasOne 关联定义: hasOne('关联模型类名','','主键') 关联模型:默认规则是当前模型名+_...Pivot} : 关联:中间表的当前模型关联键名 参考官方文档 ----

3.7K30

Django之QuerySet详解

dates() 根据日期获取查询 datetimes() 根据时间获取查询 none() 创建空查询 all() 获取所有的对象 union() 并 intersection...如果不传递任何给values_list(),它将返回模型所有字段,以在模型定义顺序。 常见情况是获取某个模型实例特定字段。...这会生成一个复杂查询并引起性能损耗,但是在以后使用关系将不需要再次数据库查询。 下面的例子解释了普通查询和select_related()查询区别。...最初获取数据不知道是否需要这些特定字段情况下,如果正在使用查询结果,可以告诉Django不要从数据库检索它们。...QuerySet通常会在内部缓存其结果,以便在重复计算不会导致额外查询。而iterator()将直接读取结果,不在QuerySet级别执行任何缓存。

2.3K20

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...dept 部门表:主表 emp 员工表:从表 两张中有级联关系 带主键表是主表 带表是从表 关联关系放在从表 (团员找班长--> 快) sql优化 一对多模型关系: class Grade...(用多) ·对象第一次被创建自动设置当前时间, 用于创建时间戳,它总是使用当前日期,默认为false ·说明 ·该字段默认对应表单控件是一个TextInput...__属性名__比较运算符,实际上就是处理数据库join Grade ---g_name Student---》s_name s_grade() gf..., 用于"最后一次修改"时间戳,它总是使用当前日期,默认为false ·DateField.auto_now_add ·对象第一次被创建自动设置当前时间, 用于创建时间戳

3.6K30

10个行锁、死锁案例⭐️24张加锁分析图🚀彻底搞懂Innodb行锁加锁规则!

(查找走二级索引,如果要回表查聚簇索引,则还会在聚簇索引上加锁) (修改时如果二级索引上也存在要修改,则还要去二级索引查找加锁并修改) 在RC及以下隔离级别下,查找过程如果记录不满足当前查询条件则会释放锁...select锁定读分为S、X,还剩insert规则没有说明 新增加锁规则 新增加锁规则分为三种情况:正常情况、遇到重复冲突情况、情况 新增锁叫插入意向锁,它是隐式锁 别的事务想要获取该记录...insert遇到重复唯一二级索引,加S next key 如果使用 ON DUPLICATE KEY update 那么S锁会换成X锁 加锁:一般不做物理,略......,修改后通过主键id=20找到二级索引上记录进行修改,因此聚簇索引、二级索引上都会获取锁 T2 事务锁定读二级索引,由于查询条件满足二级索引,因此不需要回表,但由于T1事务锁住二级索引上记录,...RR及以上加S next key insert遇到重复唯一二级索引,加S next key 如果使用**ON DUPLICATE KEY update**那么S锁会换成X锁 加锁:一般不做物理

26821

Qt数据库sqlite总结

query.exec(“select * from student”);这条语句执行完后,我们便获得了相应执行结果,因为获得结果可能不止一条记录,所以我们称之为结果。...seek(int n) :query指向结果第n条记录。指定当前位置 first() :query指向结果第一条记录。 last() :query指向结果最后一条记录。...at()//返回当前查询位置 QString name = query.value(0).toString(); //返回"name"字段索引"justin",value(i)返回i字段,0表示...,它支持,除此之外和QSqlTableModel没有什么不同 model->setRelation(2,QSqlRelation(“course”,”id”,”name”));   //设置 /.../将student表第三个属性设为course表id属性,并将其显示为course表name属性(course表在id上显示为name属性) 如果用户更改课程属性,那么他只能在课程表中有的课程中进行选择

2.9K20

07.Django学习之model进阶

) # hits database if判断时候也会执行,if queryResult:pass 一般来说,只有在“请求”查询 结果才会到数据库中去获取它们。...查询不会永远缓存它们结果。只对查询部分进行求值时会检查缓存, 如果这个部分不在缓存,那么接下来查询返回记录都将不会被缓存。所以,这意味着使用切片或索引来限制查询将不会填充缓存。...select_related 返回一个QuerySet,执行它查询它沿着关系查询关联对象数据。它会生成一个复杂查询并引起性能损耗,但是在以后使用关系将不需要数据库查询。...简单说,在对QuerySet使用select_related()函数后,Django会获取相应对应对象,从而在之后需要时候不必再查询数据库了。...nid"); 多查询 这是针对category查询,如果是另外一个呢?

2K30

关系模型由浅及深讲解【数据库概论】

:一个给定关系某一元组集合,即 当前关系 关系模式是关系描述,是静态、稳定 关系实例()是关系当前”元组集合,是动态、随时间不断变化,其变化通过关系元组改变表现出来...(4) 候选 A:候选(码) 关系能唯一标志一个元组最小属性 注意:唯一这个属性,例如学号是学生实体候选,一个学号就能确定这个学生到底哪个 关系实例上任何两个元组在候选属性...不包含在任何候选属性称为非主属性 如果还不是很理解,别急,看完概念,我们就用一道直观例题看一下 B:(码) 若关系R一个属性()F与关系S主键Ks对应,即关系R某个元组F...(3) 参照完整性 在关系模型实体以及实体间联系都是用关系来描述 关系之间参照一般通过来描述,并遵循如下约束规则 参照完整性规则: 若属性(或属性)F是关系R,它与关系S主键Ks...一种语言至少拥有代数作用,即它表达式允许通过代数形式来定义每一个关系,我们就说该语言是关系完备 被用在RDBMS,作为实现和优化查询基础。

1.5K30

Flask 入门系列教程(五)

Web 程序最常用基于关系模型数据库,这种数据库也称为 SQL 数据库,因为它们使用结构化查询语言。...True ,每次请求结束后都会自动提交数据库变动。...定义模型 模型这个术语表示程序使用持久化实体。在 ORM 模型一般是一个 Python 类,类属性对应数据库表列。...这一属性可替代 role_id 访问 Role 模型,此时获取模型对象,而不是。 添加到 User 模型 role_id 列被定义为,就是这个建立起了关系。...数据库迁移 在开发程序过程,我们会发现有时需要修改数据库模型,而且修改之后还需要更新数据库。 仅数据库表不存在,Flask-SQLAlchemy 才会根据模型进行创建。

3.2K31

flask框架(三)

案例: 编写两个模型类,一个角色(比如经理这个职位可以由好多人来扮演这个角色)模型类,还有一个用户模型类(写在多方) 关系:一对多 ?...:特点:模型.query: 得到了所有模型数据结果对象模型.query.过滤器: 过滤出了想要数据,还是一个查询结果对象模型.query.过滤器.执行器: 取出了结果集中内容 查询所有用户数据...6.数据库关系查询relationship(掌握) 简化操作 解释:为了方便数据库关联查询 特点: 1/不会在数据库产生实体字段 2/关系属性需要在一方添加,在多方 3/添加在一方,并且关系属性使用需要依赖于...(得到一个结果,只有你去获取才能得到) lazy使用: users=db.relationship('多方模型类',backref="role(自己随意命名)",lazy='dynamic') 9...有了中间表之后,中间表和每一张表都被拆分成了一对多关系,应该写在多方,所以中间表写外表 解释:多对多更关系,一般会被拆分成两张一对多表 ?

94130

PHP面试题大全

游标:是对查询出来结果作为一个单元来有效处理。游标可以定在该单元特定行,从结果当前行检索一行或多行。可以对结果当前行做修改。...您不能把任何与一个 NULL进行比较,并在逻辑上希望获得一个答案。 使用IS NULL来进行NULL判断 主键、和索引区别?...主键、和索引区别 定义: 主键–唯一标识一条记录,不能有重复,不允许为空 –表是另一表主键, 可以有重复, 可以是空 索引–该字段没有重复,但可以有一个空 作用...: 主键–用来保证数据完整性 –用来和其他表建立联系用 索引–是提高查询排序速度 个数: 主键–主键只能有一个 –一个表可以有多个 索引–一个表可以有多个唯一索引 你可以用什么来确保表格里字段只接受特定范围里...11、类如何定义常量、如何调用常量、如何在类外调用常量。 类常量也就是成员常量,常量就是不会改变量,是一个恒。 定义常量使用关键字const.

1.4K10

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

理解查询 理解查询(QuerySets) 是通过简单代码获取较好性能至关重要一步。特别是: 理解查询计算 要避免性能问题,理解以下几点非常重要: QuerySets是延迟。...一次性检索你需要任何东西 在不同位置多次访问数据库,一次获取一个数据,通常来说不如在一次查询获取它们更高效。如果你在一个循环中执行查询,这尤其重要。...不要获取你不需要东西 使用QuerySet.values()和values_list() 当你仅仅想要一个带有字典或者列表,并不需要使用ORM模型对象,可以适当使用values()。...另外,建立起一个带有延迟字段模型,要意识到一些(小、额外)消耗会在Django内部产生。...直接使用 如果你仅仅需要当中一个,要使用对象上你已经取得,而不是获取整个关联对象再得到它主键。

1.1K30

Django-model进阶(中介模型查询优化,extra,整体插入)

当你确实需要结果查询 通过访问数据库来求值。 关于求值发生准确时间,参见何时计算查询。 缓存机制 每个查询都包含一个缓存来最小化对数据库访问。理解它是如何工作将让你编写最高效代码。...查询不会永远缓存它们结果。只对查询部分进行求值时会检查缓存, 如果这个部分不在缓存,那么接下来查询返回记录都将不会被缓存。所以,这意味着使用切片或索引来限制查询将不会填充缓存。...select_related 返回一个QuerySet,执行它查询它沿着关系查询关联对象数据。它会生成一个复杂查询并引起性能损耗,但是在以后使用关系将不需要数据库查询。...简单说,在对QuerySet使用select_related()函数后,Django会获取相应对应对象,从而在之后需要时候不必再查询数据库了。...nid"); 多查询 这是针对category查询,如果是另外一个呢?

1.6K70

Django模型model

定义模型类 在模型定义属性,会生成数据库表字段 django根据属性类型确定以下信息: 当前选择数据库支持字段类型 渲染管理表单使用默认html控件 在管理站点最低限度验证 django...:对象第一次被创建自动设置当前时间,用于创建时间戳,它总是使用当前日期,默认为false 该字段默认对应表单控件是一个TextInput....模型查询 查询表示从数据库获取对象集合 查询可以含有零个、一个或多个过滤器 过滤器基于所给参数限制查询结果 从Sql角度,查询和select语句等价,过滤器像where和limit子句..."异常 count():返回当前查询总条数 first():返回第一个对象 last():返回最后一个对象 exists():判断查询集中是否有数据,如果有则返回True 限制查询,如果获取一个对象...,但是如果这部分不在缓存,那么接下来查询返回记录将不会被缓存,这意味着使用索引来限制查询将不会填充缓存,如果这部分数据已经被缓存,则直接使用缓存数据 比较运算符:表示两个下划线,左侧是属性名称

12210

Sequelize 系列教程之一对多模型关系

数据模型表关系一般有三种:一对一、一对多、多对多。Sequelize 为开发者提供了清晰易用接口来定义关系、进行表之间操作。本文我们将介绍在 Sequelize 如何定义一对多表关系。...一般来说,约束可能会导致一些性能问题。所以,建表我们一般会去掉约束,同时给加一个索引(加速查询),但之后数据一致性就需要应用层来保证了。...user.createNote 方法,会使用新建用户 userId 作为在 notes 表插入一条新数据。...`='2018-10-10 08:12:49' WHERE `id` IN (1, 2) 将 note3、note4 记录 userId 置为当前用户 id,完成关系建立: UPDATE...`createdAt` < '2018-10-10 09:21:15'; 这里需要注意是,eager loading include 传递是需获取相关模型,默认是获取全部,我们也可以根据实际需求再对这个模型进行一层过滤

12.2K30

Flask数据库过滤器与查询

,比如模型模型之间一种关联,根据角色查询属于这个角色用户有哪些 # 这里设计不像是根据表实际情况考虑,而根据模型考虑 # User 是让role对象可以获得user属性...添加到address模型person_id列被定义为,就是这个建立起了联系。传给db.ForeignKey()参数’person_id’表明,这一列是person表中行id。...这一属性可替代person_id访问 person模型,此时获取模型对象,而不是。...如果把lazy设为默认select,那么首次访问follower和followed属性才会加载对应用户,而且每个属性都需要一个单独查询,这就意味着获取全部被关注用户需要增加100次额外数据库查询...删除对象,默认层叠行为是把对象联接所有相关对象设为空。但在关联表,删除记录后正确行为应该是把指向该记录实体也删除,因为这样能有效销毁联接。

6.9K10
领券