繁体   English   中英

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

[英]How to not display foreign key as list in Django admin object page?

我有两个基本模型:

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管理中,拥有列表是不逻辑的,因为每个公司都有自己的地址。 具有内联之类的东西应该更合规,但仅限于一个元素。

因此,基本上,我目前发现的唯一解决方案是:

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

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

有解决方案的主意吗?

您可以使用两个内联,每个内联限于一个元素。 例如:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM