2012-01-01 68 views
0

我想在從另一個模型鏈接到的模型的管理員屏幕中顯示一個字段。在Django Admin窗口中顯示來自父表的字段

我有車型像這樣:

class Location(models.Model): 
    name = models.CharField(max_length = 128) 
    description = models.TextField(blank = True) 

class Building(models.Model): 
    name = models.CharField(max_length = 128) 
    description = models.TextField(blank = True)  
    location = models.ForeignKey(Location) 

class Room(models.Model): 
    name = models.CharField(max_length = 128) 
    description = models.TextField(blank = True)  
    building = models.ForeignKey(Building) 

和管理模式是這樣的:

class BuildingAdmin(admin.ModelAdmin): 
    list_display = ('name', 'location') 

class RoomAdmin(admin.ModelAdmin): 
    list_display = ('name', 'building') 

我怎樣才能顯示在管理列表中的房間模型3列,房間名稱,建築物名稱和位置名稱?

感謝

+0

您的「管理屏幕」是什麼意思?更改列表?改變形式? – 2012-01-01 19:14:02

+0

列表,因此房間模型條目列表的列將爲Room,Building,Location。 – Rob 2012-01-02 05:01:07

回答

1

你可以寫在管理員自定義方法和list_display使用它。

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('upper_case_name',) 

    def upper_case_name(self, obj): 
     return ("%s %s" % (obj.first_name, obj.last_name)).upper() 
    upper_case_name.short_description = 'Name' 

這樣你就可以在list_display中顯示任何你想要的東西。 Here你有完整的文檔。

+0

確實如此,但在這種情況下,第三列不是模型中的字段,它是模型中該模型通過外鍵鏈接到的字段。這可能嗎? – Rob 2012-01-02 05:06:34

+0

是的,這是可能的。試試看。 類RoomAdmin(admin.ModelAdmin): – gruszczy 2012-01-02 11:28:47

+0

我問這個問題之前嘗試過這種 \t list_display =( '名', '建築', 'building.location') – Rob 2012-01-02 19:06:57

相關問題