如何在Django管理对象页面中不显示外键作为列表?

时间:2014-01-10 13:29:32

标签: python django django-models django-admin

我有两个基本模型:

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)
    ...

但是,这个解决方案的问题再一次是重复的代码...... :(

有任何解决方案吗?

1 个答案:

答案 0 :(得分: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]