Переопределить действие администратора django - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть базовая модель администратора, которой мне удалось переопределить некоторые поля, такие как inlines, fields и т. Д., Но по какой-то причине я не могу переопределить действия, что мне не хватает?

@admin.register(BaseOrder)
class BaseOrderAdmin(admin.ModelAdmin):
    model = BaseOrder
    actions = ['some_action']

@admin.register(Order)
class OrderAdmin(BaseOrderAdmin):
    model = Order
    actions = []

Модель заказа должна толькоимеет действие «some_new_action», но оно имеет только базовое действие администратора «some_action», поэтому не переопределяется.

1 Ответ

0 голосов
/ 29 сентября 2019

Вы не хотите регистрировать модель дважды - в OrderAdmin, а также в родительском классе.Это может привести к странным эффектам (например, с действиями в вашем случае).Чистый способ повторно использовать функциональность в классах ModelAdmin - поместить его в миксин, а затем включить этот миксин, где это необходимо.Как это:

class CommonAdminMixin():
    actions = ['some_action']

@admin.register(CommonAdminMixin, admin.ModelAdmin)
class OrderAdmin(BaseOrderAdmin):
    model = Order
    actions = []


@admin.register(CommonAdminMixin, admin.ModelAdmin)
class AnotherAdmin(BaseOrderAdmin):
    model = AnotherModel
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...