在特定的管理视图中插入新字段?

2024-04-25 18:08:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一个新字段扩展默认的Django模型。 在本地站点中/型号.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视图中添加这个新字段。 下面的代码注册了new菜单,但是new 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源的情况下插入我的新字段吗?你知道吗


Tags: djangostore代码namefrompy模型import
1条回答
网友
1楼 · 发布于 2024-04-25 18:08:19

像往常一样看docs。你知道吗

一种可能的方法是创建从Organization派生的新MyOrganization,并注册它来代替satchmo One

你的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:在这两种情况下,数据库结构将是相同的,即将创建额外的表。你知道吗

相关问题 更多 >