1
什么是添加/编辑多个子类型的最佳解决方案。如何处理Django中一个超类型的多个子类型admin
例如一个超类型的类联系子类型的类客户端和子类型的类供应商。这里显示的方式有效,但编辑联系人时,您可以同时获得内联,即子类型“客户”和“子类型”供应商。
所以,即使您只想添加一个客户端,您也可以获得供应商的字段,反之亦然。如果添加第三个子类型,则会在您提到的示例中获得三个子类型字段组,但实际上您只需要一个子类型组:客户端。
如:
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):
...
现在,当我想添加一个客户端,即只有一个客户我的编辑联系,我得到了行内为客户端和供应商。当然对于供应商也是如此。
有没有办法避免这种情况?当我想添加/编辑客户端时,我只能看到Inline for Client,并且当我想添加/编辑一个供应商时,只有添加/编辑联系人时才会看到供应商的内联?
或者也许有不同的方法。任何帮助或建议将不胜感激。
感谢您的回复。从Django的角度来看,这可能是一个解决方案。但数据库将会有根本的不同。但现在你的建议是最快的解决方案。 – Henri 2010-03-15 15:03:01