2014-01-10 101 views
0

我有兩個基本模式:如何在Django管理對象頁面中不顯示外鍵作爲列表?

class Address(models.Model): 
    ... 

class Company(models.Model): 
    address = models.ForeignKey(Address, related_name='address') 
    billing_address = models.ForeignKey(Address, related_name='billing_address') 

我必須做出地址的模式,以不重複的代碼,因爲這兩個地址。

從Django的角度看,一切似乎都是邏輯的。但是在Django管理中,由於每個compagny都有自己的地址,因此列出一個列表並不是一種邏輯。它應該更符合像內聯但僅限於一個元素。

所以基本上,我發現在目前唯一的辦法就是要做到:

class Company(models.Model): 
    street_address = models.CharField(max_length=200) 
    ... 
    street_billing_address = models.CharField(max_length=200) 
    ... 

但是,再次與該解決方案的問題是重複的代碼... :(

任何想法嗎?溶液

回答

0

,可以使用兩個內聯,每一個不限於一個元件,例如:

class AddressInline(admin.StackedInline): 
    model = Address 
    fk_name = "address" 
    max_num = 1 

class BillingAddressInline(admin.StackedInline): 
    model = Address 
    fk_name = "billing_address" 
    max_num = 1 


class CompanyAdmin(admin.ModelAdmin): 
    # ... 
    inlines = [AddressInline, BillingAddressInline] 
相關問題