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

从django上的related_name获取外键元素

是指在Django框架中,通过设置related_name属性来获取与外键关联的对象。

在Django中,当定义了一个外键字段时,可以通过设置related_name属性来指定反向关联的名称。这个名称可以用于在关联模型中访问与外键关联的对象。

例如,假设有两个模型:AuthorBook,其中Book模型有一个外键字段指向Author模型。可以在外键字段上设置related_name属性来指定反向关联的名称。

代码语言:txt
复制
class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')

在上述示例中,通过设置related_name='books',可以在Author模型中通过books属性访问与该作者相关联的所有书籍。

代码语言:txt
复制
author = Author.objects.get(id=1)
books = author.books.all()

这样就可以获取到与特定作者相关联的所有书籍。

相关链接:

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

相关·内容

Django(ForeignKey)操作以及related_name作用

之前已经写过一篇关于Django文章,但是当时并没有介绍如何根据对数据操作,也就是如何通过主表查询子表或者通过子表查询主表信息 首先我定义了两个模型,一个是老师模型,一个是学生模型,...,并获取老师相关信息 返回一个teacher对象,接下来就是查询teacher相关联学生对象,在这里有一个需要注意点,django默认情况下每一个主表对象都有一个是属性,可以通过它查询到所有关于子表信息...,在models.py使用Foreign定义时候也可以传入一个参数related_name,操作如下: 执行python manage.py makemigrations 和 python manage.py...migrate 从上图可以看到和之前_set操作效果是一样,这两个方法是相同,所以如果觉得比较麻烦的话,可以在定义主表时候,直接就给定义好名称使用related_name...上面的查询主要是通过主表查询子表信息 下面说一下如何通过子表查询主表相关信息,也就是查询一个学生所对应老师信息 首先需要先获取一个子表对象,那么就可以通过定义时候那个字段名获取关于主表信息了

2K10

MySQL 物理开始思考

来源:http://t.cn/EGGvixb 首先贴一下知乎问题和回答 为什么很多mysq课程不推荐用物理 之前是由于有师弟跟我讨论这个问题,然后我是顺便搜了下知乎把想法也都写下,现在把他放回博客...比较公认是,他设计得的确不是很好,限制多功能不强大等。(同样,讨论是不是该用存储过程也存在这种思考) 这里贴上一些博客园看到,比较严重问题。...但不使用物理我们也有方案去实现我们逻辑,并保证他正确运行。 数据库一个策略:可以选择大多数情况下我们只更新不删除,也就是逻辑删,不再使用历史数据定期归档来减少压力。...代码各种设计和限制:对表范围操作权限,开启事务去处理逻辑,有需要进行异步操作来提高性能我们设计补偿机制去弥补,等等。...即使你对业务理解深刻,对外也掌握透彻,你也不太希望老是你管一部分他管一部分吧? 五、反对声音 最后再来说说一些坚持用思考 有人问:原本在物理开销,在程序不也有开销吗?

3.8K20

【C++】STL 容器 - map 关联容器 ④ ( map 容器常用 api 操作 | 查找指定元素 | 获取元素个数 | 获取大于等于指定元素 | 获取大于指定元素 | 获取等于指定 )

文章目录 一、查找指定元素 - std::map#find() 函数 1、函数原型简介 2、代码示例 二、获取元素个数 - std::map#count() 函数 1、函数原型简介 2、代码示例 三、获取大于等于指定元素...- std::map#lower_bound 函数 1、函数原型简介 2、代码示例 四、获取大于指定元素 - std::map#upper_bound 函数 1、函数原型简介 2、代码示例 五、获取等于指定元素...二、获取元素个数 - std::map#count() 函数 1、函数原型简介 在 std::map 关联容器 中 , 提供了 count() 成员函数 , 用于 统计容器中具有特定 Key 元素数量...; std::map 容器中 每个 Key 都是唯一 , 因此 count() 函数对于 std::map 来说实际 只能 返回 1 ( 找到了该 Key ) 或 0 ( 没有找到该 Key..., 并返回表示该 范围 迭代器对 , 该范围是一个 前闭后开区间 ; 由于 std::map 中 每个 Key 都是唯一 , 因此 equal_range() 实际返回范围最多只包含一个元素

63310

Django学习-第七讲:django常用字段、字段属性,和表关系、操作

因此这里我们首先来介绍下Django使用。 类定义为class ForeignKey(to,on_delete,**options)。...因此在底层,Django为Article表添加了一个属性名_id字段(比如author字段名称是author_id),这个字段是一个,记录着对应作者主键。...即只要这条数据引用了那条数据,那么就不能删除外那条数据。 3.SET_NULL:设置为空。如果那条数据被删除了,那么在本条数据就将这个字段设置为空。...如果那条数据被删除了,那么本条数据就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 5.SET():如果那条数据被删除了。...那么将会获取SET函数中值来作为这个值。SET函数可以接收一个可以调用对象(比如函数或者方法),如果是可以调用对象,那么会将这个对象调用后结果作为值返回回去。

3.9K30

django在开发中取消约束实现

# 在setting设置 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给关系传值...,删除外关系 反查: 在表关系里 related_name = ‘反查name’,自己不设置,django也会默认设置为class小写名字+_set , ex: book_set....(数据库字段名字room_number_id)值,将相对应值直接赋值给该字段      class_number = ClassNumber.object.get("id=1").room_number...那么”一”,Book反查是,Book.object.get(id=1).reply_set.all() # reply_set是不设置related_name时,django自己设置 多对多: class...s.teacher.remove(x) return HttpResponse("ojbk") 以上这篇django实现在开发中取消约束就是小编分享给大家全部内容了,希望能给大家一个参考。

3.6K10

python Django 反向访问器冲突解决

我有两个继承一个基类Django模型: – Request – Inquiry – Analysis 请求有两个到内置用户模型。...(User, related_name=’requests_assigned’) 由于某种原因,我得到错误 “Analysis.assign_user”反向访问器与“Inquiry.assign_user...我读过所有内容说,设置related_name应该防止冲突,但我仍然得到相同错误。任何人都能想到为什么会发生这种情况?谢谢!...)s_requests_created’) 补充知识:django related_name禁用反向映射 官方文档处理办法: ?...直接将related_name赋值为加号或以加号结尾字符串,即可实现禁用反向映射 以上这篇python Django 反向访问器冲突解决就是小编分享给大家全部内容了,希望能给大家一个参考。

1.4K10

django模型中有关系表删除相关设置

0904自我总结 django模型中有关系表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...) 1)关系字段放在AuthorDetail表中:作者删除详情删除,详情删除作者保留 2)作者找详情用 related_name(detail),详情找作者用 字段(author)...):出版社删除书不动,书删除没有任何影响 2)出版社找书用 related_name(books),书找出版社 字段(publish) 3)db_constraint断开表关联,on_delete...规定逻辑关联删除动作,models.DO_NOTHING关联无动作 三.以外字段关联 1)断关联,删除关联表记录,键值置空 db_constraint=False, on_delete=models.SET_NULL...:出版社删除或书删除彼此不影响,但关系表一定级联删除 2)正向找 字段,反向找 字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置

3K20

django序列化时使用真实值操作

展示: 一般情况下序列化得到内容只是id: ... { fields: { uat_date: "2015-07-25", statu: "CG", name: "慢赢优化",...方法: 我序列化是Content表,它含有一个关联是Module表,1对多 我要先序列化Module表,然后序列化Content表时候才可以使用到Module真实值 class ModuleManager...actual_key,要保证先序列化,如下依赖: class Content(models.Model): name = models.CharField(max_length=100) ......原生序列化serialize解析 在写接口时候,大家都离不开对query结果集序列化 嗯嗯嗯,一般我们都有DRF里面的序列化工具,但是django原生serialize你们有 用过吗??????...,这种方法并不常用 在有特定需要时候,使用这种django原生序列化,还是十分方便

1.8K10

djangorelated_name用法说明

fruits = buyer.fruit_set.all() """ django 默认每个主表对象都有一个是属性,可以通过它来查询到所有属于主表子表信息。...这个属性名称默认是以子表名称小写加上_set()来表示,这里我们主表是buyer,字表是fruit,所以主表属性就是fruit_set """ 上面的fruit_set是django为对象buyer...默认创建属性,个人建议采用自定义方式定义主表,这样使用时更熟悉一些吧!...而related_name就实现这个功能,在字表中定义时,增加related_name字段指定这个字表在主表中对应属性, 如下: class Fruit(models.Model): buyer...100).first() #然后通过子表中自定义获取子表所有信息: fruits = buyer.buyer_fruit.all() 以上这篇djangorelated_name用法说明就是小编分享给大家全部内容了

2.3K20

Django(15)和表关系

如果那条数据被删除了,那么在本条数据就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。 SET_DEFAULT:设置默认值。...如果那条数据被删除了,那么本条数据就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 SET():如果那条数据被删除了。...那么将会获取SET函数中值来作为这个值。SET函数可以接收一个可以调用对象(比如函数或者方法),如果是可以调用对象,那么会将这个对象调用后结果作为值返回回去。...注意:以上这些选项只是Django级别的,数据级别依旧是RESTRICT! 表关系 表之间关系都是通过来进行关联。而表之间关系,无非就是三种关系:一对一、一对多、多对多等。...这个OneToOneField其实本质就是一个,只不过这个有一个唯一约束(unique key),来实现一对一。 以后如果想要反向引用,那么是通过引用模型名字转换为小写形式进行访问。

2.1K40

Django之ForeignKey和ManyToManyField多表查询

只有在db_constraint=True时Django model才会在数据库建立约束, 在该值为False时不建立约束. 默认db_constraint=True....ForeignKey.related_name 这个名称用于让关联对象反查到源对象. 如果你不想让Django 创建一个反向关联,请设置related_name 为 '+' 或者以'+' 结尾....如Entry.blog作为Blog,默认情况下Blog.entry_set是包含所有参照BlogEntry示例查询集,可以使用查询集API取出相应实例。...在这种情况下,必须使用through_fields 明确指定Django 应该使用哪些 through_fields 接收一个二元组('field1', 'field2'),其中field1 为指向定义...ManyToManyField 字段模型键名称(本例中为group),field2 为指向目标模型名称(本例中为person).

1.7K10

Django中基表创建、字段属性简介、脏数据概念、子序列化

如两张表建立了一对一字段,在A表,那么先往B表写数据就更合理。...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外中设置反向查询字段名:正向找字段名,反向找related_name...值,related_name默认值是表名小写 + _set,这就是为什么在Django中跨表反向查询时我们使用表名小写 + _set去查另一张表数据。...,作者详情一定没有 DO_NOTHING:不会被级联,假设A表依赖B表,B记录删除,A表字段不做任何处理 例子:作者被删了,作者书还存在,书还是该作者写;出版社没了,出版社出版书还在...将默认值设置为空,反向查询字段名设置为book authors = models.ManyToManyField(to='Author', related_name='books

4.3K30

django-xadmin根据当前登录用户动态设置表单字段默认值方式

default=’6000′, verbose_name=’薪资待遇’) 相信你还能动态设置字段默认值: class Interview(models.Model): department...def get_department(): department = Department.objects.get(name='管理部') return department.id 但是以上都是数据库模型层面修改...补充知识:Django通过Ajax利用FormData动态提交表单(包括文件,字符串) 0 需求背景 有的时候我们上传表单,经过后台处理之后再分发回原来页面,这时必定会刷新这个页面。...为了解决这个问题,我们采用JS动态提交表单元素,如:file、text等类型,可以很好解决这一问题。...以上这篇django-xadmin根据当前登录用户动态设置表单字段默认值方式就是小编分享给大家全部内容了,希望能给大家一个参考。

1.9K20

django中ModelForm多表单组合解决方案

所以,基本表单功能看BaseForm已经足够了。 2、模型创建表单 django对于MVC中C与M间映射是非常体贴,集中体现中Model模型中(比如模型权限与用户认证)。...ContextMixin在context上下文中加入’view’元素,值为self实例。 ProcessFormView在GET请求渲染表单,在POST请求上解析form到表单实例。...PrimeContractForm表单对应模型,此时是不能save,因为project和address对应数据库记录还没有创建,所以commit传为False           contract...()           #按照四条数据库记录顺序依次创建(调用save方法)、主键赋到下一条记录中、下一次记录创建(save)           projectAddress = context...['projectAddressForm'].save()           #项目表单中获取到模型,先把地址id赋到外再保存           project = context['projectForm

3.3K20

Django 学习笔记之模型高级用法(

2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置时需要添加一个 on_delete选项。本身涉及到两个表数据,况且在数据库中是有约束行为。...SET_DEFAULT: 置默认值,删除时候,字段设置为默认值,所以定义时候注意加上一个默认值。 SET(): 自定义对应实体值。...2)limit_choices_to 该参数用于限制所能关联对象,只能用于 Django ModelForm(Django表单模块)和 admin 后台,对其它场合无限制功能。...4) related_name 用于关联对象反向引用模型名称。主要用于反向查询,即源模型实例通过管理器返回第一个模型所有实例。...用于目标模型反向过滤模型对象名称。

2K30

python测试开发django-37.(ForeignKey)查询

前言 前面在admin后台页面通过设置,可以选择下拉框选项,本篇主要讲解关于(ForeignKey)查询 models设计 在上一篇基础新增一个BankName表,Card表通过关联到...makemigrations 和migrate,同步数据 python manage.py makemigrations python manage.py migrate shell模式新增测试 为了调试方便,可以使用django...反向查询,当ForeignKey没设置related_name参数,默认是通过关联表名称加_set去查询 查询结果是QuerySet集合对象 count()函数统计查询个数 [0].card_id 下标取值...当Card表(ForeignKey)只有一个时,可以通过_set去查询到,当有多个时,就无法查询具体哪个了,这时候就需要加个related_name参数。...参数相当于给这个取了个别名,方便多个时候去识别。

1.6K20
领券