2014-09-24 50 views
0

我有一個名爲Event的模型和一個名爲Person的模型。我希望能夠爲一個事件定義角色,並能夠將許多人員分配給一個事件角色。每個人只能成爲一個活動的一個角色的一部分。在我的模型中創建這種關係的最佳方式是什麼?Django獨特關係

回答

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 =音樂會

創建一些人:Jim.role =蹦牀,John.role =蹦牀等。

+0

有了這個只有一個人可以在一個角色。我需要很多人蔘與角色,但每個活動只有一個角色。 – barchiesi 2014-09-24 21:11:45

+0

我不認爲這是正確的。如果「unique」被設置爲true,那將是真的。 'role = models.ForeignKey(Role,unique = True)'它是如何創建幾個Person對象並將它們全部指向同一個Role對象,然後將該Role對象指向一個Event對象。 – teewuane 2014-09-24 21:14:34

+0

好的,那麼有什麼說吉姆只能是保鏢而不是其他角色? – barchiesi 2014-09-24 21:21:00

1

你需要一個榜樣:

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

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

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

這樣,一個事件可以有多個角色,他們每個人由一個人管理。

+0

我希望每個角色都有很多人,但每個人只能在一個特定事件中扮演一個角色。 – barchiesi 2014-09-24 21:11:08