2017-02-01 46 views
-1

我需要在Django中定義模型的幫助。我需要的是:Django模型:爲管理團隊選擇現有球員

  • 球員,
  • 和團隊。

在人際關係方面:

  • 1玩家只能在一個時間在一個團隊的成員(或沒有哪支球隊),
  • 和(顯然)隊只能包含現有的球員。

所以我想應該有一個從球隊到球員的一對多關係。我想有在Django的管理方是:

1)創建/編輯播放器時:一個下拉列表拿起一個團隊,

2),並創建/編輯團隊,能夠從現有列表創建球員列表(例如,從下拉列表中選擇「添加」)。

雖然1)在爲模型中的球員添加ForeignKey時是自動的,但我不知道如何實現2)。

說我的車型有:

class Team(models.Model): 
    team_name = models.CharField(max_length=100) 
    def __str__(self): 
     return self.team_name 

class Player(models.Model): 
    player_name = models.CharField(max_length=100) 
    def __str__(self): 
     return self.player_name 

回答

1

最簡單的解決辦法是增加另一個表寫你的團隊球員信息給它。

編輯,我的猜測是,你正在尋找的東西像InlineModelAdmin

models.py

from django.db import models 

class Team(models.Model): 
    team_name = models.CharField(max_length=100) 

    def __str__(self): 
     return self.team_name 


class Player(models.Model): 
    player_name = models.CharField(max_length=100) 

    def __str__(self): 
     return self.player_name 


class TeamPlayer(models.Model): 
    player = models.ForeignKey(Player) 
    team = models.ForeignKey(Team) 

    def __str__(self): 
     return self.player.player_name 

admin.py

class TeamPlayerAdminInline(admin.TabularInlin): 
    model = TeamPlayer 


@admin.register(Team) 
class TeamAdmin(admin.ModelAdmin): 
    list_display = ['team_name'] 
    inlines = [TeamPlayerAdminInline] 


@admin.register(Player) 
class PlayerAdmin(admin.ModelAdmin); 
    list_display = ['player_name'] 
    inlines = [TeamPlayerAdminInline] 
+0

隨着車型正如我在複製他們我問題,還是在某處使用ForeignKey? – GuitarExtended

+0

我已經添加了models.py文件 – mislavcimpersak

+0

感謝您的編輯,但這不符合我的需求。通過admin.TabularInline,我可以在球隊的個人資料中創建新球員,但我需要的是從現有球員列表中選擇球員。 – GuitarExtended