Предположим, у нас есть один класс в модели, от которого наследуются несколько других классов. Теперь мы также определим класс администратора для управления макетом в интерфейсе администратора.
Мы можем сделать все остальные классы администратора наследуемыми (как мы это делали в модели), но как мы можем перезаписать наборы полей, чтобы добавить некоторые новые значения?
Пример:
в файле модели:
class A(models.Model):
field1 = models.TextField(..)
field2 = models.TextField(..)
class B(A):
field3 = models.TextField(..)
в админ-файле:
class A_Admin(admin.ModelAdmin):
fieldsets = (
(None, {
'fields': (( 'field1', 'field2'))
}),
)
class B_Admin(A_Admin):
pass # here I notice that it takes the fields from A_admin, I would like to add my field 3 without rewriting the fieldsets
admin.site.register(A, A_Admin)
admin.site.register(B, B_Admin)
результирующие наборы полей будут:
(
(None, {
'fields': (( 'field1', 'field2'))
}),
('Specific to B', {
'fields': ('field3')
}),
)