在django中建立一对多的关系

leo*_*ojg 3 django database-design one-to-many

我想在django中建立一对多的关系.

在我的模型中,我有一个类Person和一个类Group,我想要的关系是一个组内部可以有N个人,并且一个组内部至少有一个人不能存在

在MER图中它就像(想象这些是实体和关系)

|组| 1 ==== <> ----- N |人|

nil*_*ilu 17

正如亚瑟所述,这在Django文档中得到了很好的记录.

事实上很容易:

from django.db import models

class Person(models.Model):
    # Some other fields
    group = models.ForeignKey(Group, related_name='people')

class Group(models.Model):
    # Some fields
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,您只需在person类中创建一个外键 - >这相当于您在数据库中手动设置它的方式,如果您应该这样做的话.

Django将自动添加反向关系,以便您可以从组中找到人:

some_group.people
Run Code Online (Sandbox Code Playgroud)

请注意,related_name指定反向关系的名称.这是可选的,但我想你想用people而不是persons.

  • 如果你按照描述添加外键字段,Django会自动添加反向关系,这样你就可以查询`some_group.persons`.如果要使用`some_group.people`,可以将相关名称设置为"people".我编辑了这篇文章以反映这一点. (2认同)