2014-01-10 50 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] 
相关问题