Вставить новое поле в конкретном представлении администратора?
Я пытаюсь расширить модель Django по умолчанию новым полем. В localsite/models.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?
1 ответ
Смотрите документы как обычно.
Одним из возможных способов является создание нового MyOrganization
происходит от Organization
и зарегистрируйте его вместо 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
для интерфейса администратора и снова зарегистрировать модель. По мне кажется, как более шаблонный и результат будет таким же.
Примечание: в обоих случаях структура БД будет одинаковой, то есть будет создана дополнительная таблица.