您能解释一下Django中Field对象的related_name
和related_query_name
属性之间的区别吗?我用的时候,怎么用呢?谢谢!
您能解释一下Django中Field对象的related_name
和related_query_name
属性之间的区别吗?我用的时候,怎么用呢?谢谢!
related_name
将是相关对象的属性,它允许您"倒退"到具有外键的模型.例如,如果ModelA
有一个类似于:model_b = ForeignKeyField(ModelB, related_name='model_as')
的字段,这将使您能够通过转到model_b_instance.model_as.all()
来访问与ModelB
实例相关的ModelA
个实例.请注意,这通常用复数表示外键,因为外键是一对多关系,而等式的多个边是在其上声明了外键字段的模型.
文档中链接的进一步解释很有帮助.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 有明智的违约.