【发布时间】:2010-03-15 02:02:31
【问题描述】:
添加/编辑多个子类型的最佳解决方案是什么。
例如,超类型类 Contact 与子类型类 Client 和子类型类供应商。此处显示的方式有效,但是当您编辑联系人时,您会同时获得内联,即子类型 Client 和子类型 Supplier。
因此,即使您只想添加一个客户,您也可以获得供应商的字段,反之亦然。如果添加第三个子类型,您将获得三个子类型字段组,而实际上您只需要一个子类型组,在上述示例中:客户端。
例如:
class Contact(models.Model):
contact_name = models.CharField(max_length=128)
class Client(models.Model):
contact = models.OneToOneField(Contact, primary_key=True)
user_name = models.CharField(max_length=128)
class Supplier(models.Model):
contact.OneToOneField(Contact, primary_key=True)
company_name = models.CharField(max_length=128)
在 admin.py 中
class ClientInline(admin.StackedInline):
model = Client
class SupplierInline(admin.StackedInline):
model = Supplier
class ContactAdmin(admin.ModelAdmin):
inlines = (ClientInline, SupplierInline,)
class ClientAdmin(admin.ModelAdmin):
...
class SupplierAdmin(admin.ModelAdmin):
...
现在,当我想添加一个客户时,即只有一个客户,我编辑了联系人,我得到了客户和供应商的内联。供应商当然也一样。
有没有办法避免这种情况?当我想添加/编辑只看到客户内联的客户时,以及当我想添加/编辑只看到供应商内联的供应商时,在添加/编辑联系人时?
或者也许有不同的方法。任何帮助或建议将不胜感激。
【问题讨论】:
标签: django django-admin inlines