我试图用一个新的字段扩展默认Django的模型。在localsite/models.py s.py中,我有以下代码:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from satchmo_store.contact.models import Organization
class OrganizationExtra(models.Model):
organization = models.OneToOneField(Organization,
verbose_name=_('Organization'), primary_key=True )
vat_number = models.CharField(_('VAT'), max_length=12)
接下来是运行./manage.py syncdb
,它为上面的模型创建了一个新表。到目前一切尚好。
现在,我尝试在管理界面中的相关Organization
视图中添加这个新字段。下面的代码将注册新菜单,但是鉴于相关的vat_number
模型,将不会显示新的Organization
字段。
from django.contrib import admin
from localsite.models import ProductResource, OrganizationExtra
admin.site.register(OrganizationExtra)
原始的Organization
模型是在
from satchmo_store.contact.models import Organization
from django.contrib import admin
class OrganizationOptions(admin.ModelAdmin):
list_filter = ['type', 'role']
list_display = ['name', 'type', 'role']
admin.site.register(Organization, OrganizationOptions)
知道如何插入我的新字段而不触及原始的Satchmo源吗?
发布于 2013-12-01 06:29:09
像往常一样看到文档。
一种可能的方法是创建从MyOrganization
派生的新Organization
,并将其注册以代替satchmo。
你的models.py
from django.db import models
from django.utils.translation import ugettext_lazy as _
from satchmo_store.contact.models import Organization
class MyOrganization(Organization):
vat_number = models.CharField(_('VAT'), max_length=12)
你的admin.py
from django.contrib import admin
from localsite.models import MyOrganization
from satchmo_store.contact.models import Organization
from satchmo_store.contact.admin import OrganizationOptions
admin.site.unregister(Organization)
admin.site.register(MyOrganization, OrganizationOptions)
另一种可能的解决方案(如果您想坚持使用OrganizationExtra
)是为管理界面和重新注册模型为Organization
创建自定义表单。从我看来,更多的样板和结果将是一样的。
NB:在这两种情况下,DB结构都是相同的,即将创建额外的表。
https://stackoverflow.com/questions/20312947
复制相似问题