Администратор Django перезаписывает наборы полей - PullRequest
2 голосов
/ 23 января 2012

Предположим, у нас есть один класс в модели, от которого наследуются несколько других классов. Теперь мы также определим класс администратора для управления макетом в интерфейсе администратора.

Мы можем сделать все остальные классы администратора наследуемыми (как мы это делали в модели), но как мы можем перезаписать наборы полей, чтобы добавить некоторые новые значения?

Пример:

в файле модели:

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')
        }),
    )

1 Ответ

0 голосов
/ 23 января 2012

Я не знаю, будет ли это аккуратным решением, но оно должно делать то, что вы хотите.

class A_Admin(admin.ModelAdmin):
    fieldsets = [
            (None, {'fields': ['field1', 'field2']}),
    ]

class B_Admin(A_Admin):
    fieldsets = [
             ('Specific to B', {'fields': ['field3', 'field4']}),
    ]
    fieldsets.insert(0, A_Admin.fieldsets[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...