related_name – Django内置字段验证
related_name属性指定了从用户模型返回到你的模型的反向关系的名称。如果你没有指定related_name,Django会使用你的模型名称和后缀_set自动创建一个。
语法:
解释:
用一个例子说明related_name=”name”。考虑一个名为suorganizer(start up organizer)的项目,有一个名为organizer的应用程序。
在组织者应用程序的models.py文件中输入以下代码。
在Django上运行了makemigrations和migrate,并渲染了上述模型后,让我们尝试从Django shell上用None创建一个实例。要启动Django shell,请输入以下命令。
现在让我们尝试用None创建Tag和Post的实例。
让我们在管理界面检查模型的实例是否已经创建。
1.标签对象。
2.Post object
在Django中,我们只在一个地方指定对称关系。related_name参数是定义关系的另一端。具体来说,给定一个Post实例p,与这个帖子相关的标签可以通过p.tags访问。然而,给定一个Tag实例t,我们没有明确定义一个变量来访问Post对象。多亏了related_name选项,我们现在可以通过blog posts属性访问与标签t相关的博客帖子列表,如t.blog_posts。related_name参数实际上是一个选项。如果我们不设置它,Django会自动为我们创建关系的另一端。在Tag模型的情况下,Django会创建一个post_set属性,在我们的例子中允许通过t.post_set访问。Django使用的公式是模型的名称,然后是字符串_set。因此,相关的名称参数只是覆盖了Django的默认值,而不是提供新的行为。