Django独特的关系

时间:2014-09-24 20:24:56

标签: django django-models

我有一个名为Event的模型和一个名为Person的模型。我希望能够为事件定义角色,并能够将多个人员分配给事件角色。每个人只能参加一个活动的一个角色。在我的模型中创建这种关系的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

也许是这样的?

class Event(models.Model):
    name = models.CharField(...)
    ...

# a role is created and assigned to an event.
class Role(models.Model):
    event = models.ForeignKey(Event)
    ...


# person is created and assigned a role. I would foreignkey to the role so the person can only be assigned to one role. And not several roles assigned to one person.
class Person(models.Model):
    role = models.ForeignKey(Role)
    ...

创建活动:音乐会

创建角色:Bouncer.event = Concert

创建一些人:Jim.role = Bouncer,John.role = Bouncer等。

答案 1 :(得分:1)

您需要一个角色模型:

class Event(models.Model):
    # ...

class Person(models.Model):
    # ...

class Role(models.Model):
    event = models.ForeignKey(Event)
    person = models.ForeignKey(Person)
    # ...

这样,一个事件可以有多个角色,每个角色由一个人管理。