2015-08-09 18 views
0

開始之前:我對Django的理解是在初學者級別,我無法通過谷歌找到足夠的幫助。Django中的多個可選ForeignKeys

我將用一個例子開始:

class Player(models.Model): 
    ... 


class Tournament(models.Model): 
    ... 
    first_place = models.ForeignKey(Player) 
    second_place = models.ForeignKey(...) 
    third_place = models.ForeignKey(...) 

我的問題是:有多人排在首位,第二位,依此類推。我怎樣才能以一種讓我每次都能添加自己數量的玩家的方式來實現模型?

我已經嘗試過ManyToMany代替ForeignKey但後來我得到了管理菜單的錯誤,當我嘗試保存Tournament對象,指出必須有一個ID本作的對象,甚至當我不選擇任何Player小號被添加。

回答

2

不知道如果我理解正確的問題,但如果你想ForeignKey運動自選,也想添加多個Player S,你可以使用ManyToManyField並設置nullblank,既True

class Tournament(...): 
    ... 
    first_place = models.ManyToManyField(Player, blank=True, null=True) 
    ... 
1

這將解決您的問題,你現在可以自由地爲每個玩家添加每個地方。視圖中的.count()函數可以獲取所選播放器的對象數量。如果我能夠理解你在這裏做什麼,那麼當你可以爲用戶指定一個對象的位置時,每個用戶現在能夠在每個類別中擁有無限的空間位置,就不需要多人組合。評論你是否需要更多幫助。

Class FirstPlace(models.Model): 
    first = models.ForeignKey(Player) 

Class SecondPlace(models.Model): 
    second = models.ForeignKey(Player) 

Class ThirdPlace(models.Model): 
    third = models.ForeignKey(Player) 
相關問題