2010-10-21 113 views
1

我的模式是這樣的:現在如何更改外鍵字段在django admin中的顯示方式?

Location: 
    state 
    county 
    city 
    street 

Building: 
    name 
    location = ForeignKey(Location) 

,在管理,編輯Building的時候,我想在這種方式編輯位置的能力:how the admin should look like

所以,它就像一個內嵌,但在Building中有Location,而不是相反的方式。

+0

也許你可以顯示scrennshot和你現在正在使用的admin.py代碼?也許你註冊的方式不對,不是嗎? – kovshenin 2010-10-21 08:06:51

+0

@kovshenin:問題是,如果外鍵定義了建築與位置之間的N:1關係,則無法爲位置定義嵌入式表單。 – 2010-10-21 17:35:09

回答

0

如果您在建築物和位置之間保持一對一的關係,那麼您的問題可能更容易解決。例如,通過將建築物從位置分類或將位置字段集成到建築物中。

我假設沒有多少建築物共享相同的位置。因此,無論如何,使用外鍵到場所都不會節省很多。這個外鍵也使編輯變得複雜。特別是,如果您想要位置組件的單獨輸入字段。通常情況下,您首先必須在創建新的位置條目之前搜索現有位置進行匹配。

以下示例使構建位置的子類並將構建和位置字段分組爲管理表單的兩個部分。你的應用程序可能需要一些微調。

型號:

class Location(models.Model): 
    state = models.CharField(max_length=30) 
    county = models.CharField(max_length=30) 
    city = models.CharField(max_length=30) 
    street = models.CharField(max_length=30) 

class Building(Location): 
    name = models.CharField(max_length=120) 

管理形式:

class BuildingAdmin(admin.ModelAdmin): 
    fieldsets = (
     ('Building', { 
      'fields': ('name',) 
     }), 
     ('Location', { 
      'fields': (('state', 'county', 'city', 'street'),) 
     }), 
    ) 

admin.site.register(Building, BuildingAdmin) 
相關問題