您能解释一下 Django 中 Field 对象的 related_name
和 related_query_name
属性之间的区别吗?当我使用它们时,如何使用它们?谢谢!
最佳答案
related_name
将是相关对象的属性,允许您“向后”返回到带有外键的模型。例如,如果 ModelA
有如下字段:model_b = ForeignKeyField(ModelB, related_name='model_as')
,这将使您能够访问 ModelA
与您的 ModelB
相关的实例实例通过 model_b_instance.model_as.all()
.请注意,这通常用复数来表示外键,因为外键是一对多关系,而该等式的多方是声明了外键字段的模型。
文档中链接的进一步解释很有帮助。 https://docs.djangoproject.com/en/dev/topics/db/queries/#backwards-related-objects
related_query_name
用于 Django 查询集。它允许您过滤外键相关字段的反向关系。继续我们的示例 - 在 Model A
上有一个字段喜欢:
model_b = ForeignKeyField(ModelB, related_query_name='model_a')
将使您能够使用 model_a
作为查询集中的查找参数,例如:ModelB.objects.filter(model_a=whatever)
. related_query_name
更常见的是使用单数形式。 .正如文档所说,没有必要指定两个(或其中一个)related_name
和 related_query_name
. Django 有合理的默认值。
关于python - Django中 'related_name'和 'related_query_name'属性之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132872/