Django 中的 related_name 和 related_query_name 是什么?

2023-11-25

我对 django 框架中的代码有一个问题related_name 和 related_query_name在 Django 中。请django专家解释一下django中的 related_name ,代码如下:

相关名称='+'


相关名称

Django 维护每个对象的向后关系,以便于访问相关对象。假设您有两个名为“学校”和“学生”的模型,并且一所学校可以有多个学生。所以你会有这样的模型定义

class School(models.Model):
    name = models.CharField(max_length=55)
    city = models.Charfield(max_length=55)

class Student(models.Model):
    name = models.CharField(max_length=55)
    school = models.ForeignKey(School)

现在,如果您有一个学校对象,那么您可以通过显式编写查询来访问该学校的所有学生。

school = School.objects.get(id=1)
# Now if need all students of this school, first thing that come in your mind would be
Student.objects.filter(school=school)
# But instead of this, you can access all students by
school.student_set.all()

Here student_set是 Django 制定的默认相关名称。但是您可以像这样自定义相关名称

class Student(models.Model):
    name = models.CharField(max_length=55)
    school = models.ForeignKey(School, related_name='students')
# Now you can do
school.students.all()

相关名称中的特殊字符

如果你定义related_name='+'那么后向关系在对象上不可用并且school.student_set.all()会给你错误。

如果您不希望 Django 创建向后关系,请将 related_name 设置为“+”或以“+”结尾。例如,这将确保 User 模型不会与该模型有向后关系:

相关查询名称

related_query_name 与 related_name 类似,但它在查询集中使用。

如果您需要通过学校模型对学生应用一些过滤器,那么您会这样做

School.objects.filter(student__name='abc')

但是如果你定义了 related_query_name 那么你可以这样做

class Student(models.Model):
    name = models.CharField(max_length=55)
    school = models.ForeignKey(School, related_query_name='abc')
# Now you can do
School.objects.filter(abc__name='abc')

请参阅文档以获取更多参考:https://docs.djangoproject.com/en/3.0/ref/models/fields/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 中的 related_name 和 related_query_name 是什么? 的相关文章

随机推荐

  • 如何在 Bokeh 0.13 中制作和弦图?

    以前版本的 Bokeh 似乎有和弦图 https docs bokeh org en 0 12 4 docs gallery chord chart html 但不是最新版本 https docs bokeh org en latest d
  • ACTION_SEND 用于发送短信

    我想打开本机应用程序来发送短信 但应该已经有电话号码 我发现 ACTION SEND 但当我调用我的函数时 它返回错误 04 26 11 59 15 991 ERROR AndroidRuntime 20198 android conten
  • 挥发性及其有害影响

    我是一名嵌入式开发人员 在使用 I O 端口时使用 volatile 关键字 但我的项目经理建议使用 volatile 关键字是有害的 并且有很多缺点 但我发现在大多数情况下 volatile 在嵌入式编程中很有用 据我所知 挥发性在内核代
  • 如何在 Linux 上构建 Mac 软件包? (BOM文件问题)

    我正在经营一家为人们制作电子邮件信纸的公司 我们有一些 Mac 用户当前必须下载 zip 文件并手动将其复制到他们的邮件信纸目录中 我希望自动化该过程 并允许 Mac 用户直接下载一个包 该包将自动复制这些文件 我已经使用 PackageM
  • 是否有海龟图形使用的关键事件名称的完整列表?

    玩耍的同时蟒蛇的乌龟模块 我用了一些关键事件正如官方文件所述 turtle onkey fun key 参数 fun 没有参数或 None 的函数 key 字符串 键 例如 a 或键符号 例如 space Now the interesti
  • 在命令行(终端)上使用 R 脚本的最佳方式是什么?

    使用 R 脚本从命令行进行简单绘图非常方便 然而 从 bash 脚本运行 R 一点也不方便 理想的可能是这样的 path to R or usr bin env R 但我没能让其中任何一个发挥作用 另一种选择是将脚本纯粹保留在 R 中 例如
  • 如何使用 R 从 dropbox 下载文件(任何形式)

    I tried download file https www dropbox com s r3asyvybozbizrm Himalayas jpg destfile 1 jpg method auto 但它返回该页面的 HTML 源代码
  • mongodb是否具有关系型数据库中的trigger、procedure等属性?

    正如标题所示 包括 Map Reduce 框架 如果我想在插入记录之前触发一个事件来运行一致性检查或安全操作 我该如何使用 MongoDB 来做到这一点 MongoDB 不支持触 发器 但人们已经围绕它们创建了解决方案 主要使用 oplog
  • Java中超类引用无法调用子类方法

    我对Java的多态性有一个基本的怀疑 我已将下面的代码写入一个名为 AnimalTestDrive java 的文件中 根据我的说法 下面的代码应该特别适用于粗体行 但不幸的是它不是 你能解释一下为什么吗 我给出了以下错误 class Do
  • 在 Chart.js 段中嵌入唯一标识符?

    我想通过允许用户双击切片进行向下钻取来使饼图具有交互性 我相信做到这一点的方法是在画布上创建一个 onclick 处理程序 并使用getSegmentsAtEvent 以确定单击了哪个切片 调用返回的段数据getSegmentsAtEven
  • 缓慢的“属性获取”和“函数”过程

    我遇到了一个令人讨厌的 VBA 错误 它使得Property Get过程调用真的很慢 这很可能是由于最近的 Office 更新 我有 Office365 造成的 它仅影响 32 位 CPU 上的 Excel The bug 考虑一个名为Cl
  • 变更数据捕获或变更跟踪 - 与传统审计跟踪表相同吗?

    在我深入研究 Microsoft 文档的深渊之前 我想知道有变更数据捕获和变更跟踪经验的人是否知道其中之一或两者是否可以用来取代传统的 审计追踪表副本 真实 table 原始表的所有字段 加上日期 时间 用户 ID 和 DML 动作字段 插
  • 您能推荐 PHP 性能分析工具吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 谁能推荐一些有用的 PHP
  • 非静态成员函数的 decltype 格式是否错误?

    我不确定是否完全理解 dcl type 4 3 对于一个表达式e 表示的类型decltype e 定义如下 4 3 否则 如果e是不带括号的 id 表达式或不带括号的类成员访问 decltype e 是命名实体的类型e 如果没有这样的实体
  • 如何在 Java 中使用正则表达式查找重复字符?

    谁能给我一个 Java 正则表达式来识别字符串中的重复字符 我只寻找立即重复的字符 它们可以是字母或数字 Example abcccde abcde Try w 1 The w匹配任何单词字符 字母 数字或下划线 并且 1 匹配第一组括号中
  • Javascript:未定义为函数参数

    On this page 它显示了一些示例代码 包含以下行 var Subject function window undefined 是什么undefined作为函数参数 这用于防止覆盖值undefined在非严格模式下 在非严格模式下
  • SendMessage,什么时候使用KEYDOWN,SYSKEYDOWN等?

    我正在编写一个应用程序 使用以下命令将击键发送到另一个应用程序SendMessage DllImport user32 dll public static extern int SendMessage IntPtr hWnd int Msg
  • C++11 lambda 到函数指针

    我开始使用 C 11 lambda 开发应用程序 并且需要将某些类型转换为函数指针 这在 GCC 4 6 0 中完美运行 void test puts Test test 我的问题是当我需要在 lambda 中使用函数或方法局部变量时 co
  • PrintWriter 和 DataOutputStream 有什么区别?

    我正在开发一个 Android 聊天室应用程序 我阅读了不同的教程 有些使用PrintWriter发送数据 有些使用DataOutputStream 这两者有什么区别 哪一个更适合聊天应用程序 来自java文档 A 数据输出流允许应用程序以
  • Django 中的 related_name 和 related_query_name 是什么?

    我对 django 框架中的代码有一个问题related name 和 related query name在 Django 中 请django专家解释一下django中的 related name 代码如下 相关名称 相关名称 Djang