2015-07-20 22 views
0

我有兩個型號:在Django Admin中顯示組成員的簡單方法?

class Division(models.Model): 
    DIVISIONS = (
     (u'D1', u'Division1'), 
     (u'D2', u'Division2'), 
     (u'D3', u'Division3'), 
    ) 
    division = models.CharField(max_length=3, choices=DIVISIONS) 
    created = models.DateTimeField(auto_now_add=True) 
    modified = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return self.division 


class Player(models.Model): 
    name = models.TextField() 
    code = models.CharField(max_length=6) 
    division = models.ForeignKey(Division) 
    created = models.DateTimeField(auto_now_add=True) 
    modified = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return self.name 

有沒有從該司編輯所有玩家的一種方式?我試過在Division中添加一個ManyToMany字段,但似乎沒有正確鏈接兩個模型。從2009這個問題擊中了我想要完成的事情......是否有更直接和現代的方式來編輯管理員組中的組成員身份以及成員身份?

回答

1

您可以使用InlineModelAdmin objects特別是TabularInline對象。下面的示例代碼可讓您編輯屬於某個特定部門的玩家列表。

# admin.py 
from django.contrib import admin 

class PlayerInline(admin.TabularInline): 
    model = Player 

class DivisionAdmin(admin.ModelAdmin): 
    inlines = [ 
     PlayerInline, 
    ] 

至於能夠從播放器模型編輯師,你應該已經能夠做到這一點,除非你編輯的字段列表中刪除它。如果您打算更改爲ManyToManyField,你需要創建一個through model(例如成員),並創建了內聯像這樣:

# admin.py 
from django.contrib import admin 

class MembershipInline(admin.TabularInline): 
    model = Membership 

class DivisionAdmin(admin.ModelAdmin): 
    inlines = [ 
     MembershipInline, 
    ] 

class PlayerAdmin(admin.ModelAdmin): 
    inlines = [ 
     MembershipInline, 
    ] 
+0

這是100%就是我一直在尋找,謝謝!比舊線程中的代碼片段更容易實現。 – DJO3

+1

爲了公平對待舊的片段,它試圖幫助展示ManyToMany關係而不是您的ManyToOne。 –

+0

我在寫這篇文章時一定很困,但是我在與ManyToMany字段內聯的最後一節中做了一些更正。 –

相關問題