2014-05-12 166 views
0

我正在設計一個Django應用程序,讓運動員註冊參加比賽。每個運動員都有幾個體重類別,每個體重類別都存儲在另一個模型的外鍵中。模型如下:Django表單ForeignKey組

class Tournament(models.Model): 
    tourney_name = models.CharField(max_length=30) 
    tourney_date = models.DateTimeField() 
    tourney_classes = models.ManyToManyField(WeightClass, related_name='tourney_name', blank=True) 

class Athlete(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
    email_address = models.EmailField(unique=True) 
    athlete_class = models.ForeignKey(WeightClass, related_name='entries') 

class WeightClass(models.Model): 
    class_name = models.CharField(max_length=100, unique=True) 
    class_info = models.CharField(max_length=50) 
    class_group = models.CharField(max_length=100) 

重量類被分成組,我希望類在註冊表中分組。例如,我們將青少年隊列爲一組。在少年男子組中,我們有輕量級,中量級和重量級。然後我們有青少年女性,高級男性等。我希望這個表格可以作爲單獨分組的每個體重類別的選項按鈕。

  • 青年男子
    • 輕型
    • 中量級
    • 重量級
  • 青年女子
    • 輕型
    • 中量級
    • 重量級

所以我需要我的形式來查詢比賽的數據庫,然後檢索所有的權重類的該特定比賽,然後顯示體重級別如圖所示以上。我該怎麼做呢?

回答

0

我建議你在WeightClass之內有class_group作爲外鍵關係。因此,這樣的:

class WeightClass(models.Model): 
    class_name = models.CharField(max_length=100, unique=True) 
    class_info = models.CharField(max_length=50) 
    class_group = models.ForeignKey(WeightGroup) 

class WeightGroup(models.Model): 
    name = models.CharField(max_length=100, unique=True) 

然後,您可以首先顯示所有的重量組,然後根據用戶的選擇過濾WeightClass

如果輕型實例應該是兩個青年男子青年女子一樣,那麼你也許應該考慮到其建模爲多對多的關係。

+0

這很好,謝謝! – Nse