Django中使用的“related_name”是什么?

问题:

related_name参数在ManyToManyFieldForeignKey字段有用吗?例如,给出以下代码,related_name='maps'的效果如何?

class Map(db.Model):
    members = models.ManyToManyField(User, related_name='maps',
                                     verbose_name=_('members'))

回答:

related_name属性指定从User模型返回到模型的反向关系的名称。
如果您没有指定related_name,Django会自动创建一个使用后缀为_set的模型名称,例如User.map_set.all()
如果do指定,例如User User模式User.map_set仍然可以工作,但User.maps.语法显然有点清洁,笨拙;因此,例如,如果您有一个用户对象current_user,则可以使用current_user.maps.all()获取与current_user关系的Map模型的所有实例。
Django documentation有更多细节。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What is `related_name` used for in Django?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 + 4 =