一尘不染

Django什么是反向关系?

django

有人可以告诉我反向关系是什么意思吗?我已经开始使用Django,并且在文档的很多地方都看到了“反向关系”。到底是什么意思?为什么有用?它与related_name有什么关系?


阅读 675

收藏
2020-03-29

共1个答案

一尘不染

这是有关related_name的文档

假设你有2个模型

class Group(models.Model):
    #some attributes

class Profile(models.Model):
    group = models.ForeignKey(Group)
    #more attributes

现在,你可以从配置文件对象执行操作profile.group。但是,如果要给配置文件对象指定group对象,该怎么做?多数民众赞成在哪里related namereverse relationship进来。

Django默认情况下为你提供一个默认值related_name,即ModelName(小写),后跟_set-在这种情况下,它将为profile_set,so group.profile_set

但是,你可以通过related_nameForeignKey字段中指定a来覆盖它。

class Profile(models.Model):
    group = models.ForeignKey(Group, related_name='profiles')
    #more attributes

现在,你可以按以下方式访问外键:

group.profiles.all()
2020-03-29