Не удается зарегистрировать simple-history, если вы уже используете настройку ModelAdmin?

register() принимает только 3 позиционных аргумента ("self" передается неявно. Если уже используется класс ModelAdmin для настройки внешнего вида модели в Django Admin, моя регистрация будет выглядеть следующим образом:

admin.site.register(AttorneyGroup, AttorneyGroupAdmin)

Если я хочу зарегистрировать SimpleHistoryAdmin, я бы добавил 4-й позиционный аргумент, например, так:

admin.site.register(AttorneyGroup, AttorneyGroupAdmin, SimpleHistoryAdmin)

Это вызывает следующее исключение:

TypeError: register() takes from 2 to 3 positional arguments but 4 were given

Кажется, что простая история не может быть зарегистрирована, если пользователь уже настраивает модель с помощью ModelAdmin. Есть ли другой способ реализации простой истории, которая позволяет избежать этой проблемы?

2 ответа

Сделай это так:

class AttorneyGroupAdmin(SimpleHistoryAdmin):
      #custom admin

admin.site.register(AttorneyGroup, AttorneyGroupAdmin)

Это позволяет вам использовать Simple History Admin, при этом настраивая его так, как вы хотите

Вы можете поместить все это в отдельные функции регистра, если хотите:

admin.site.register(AttorneyGroup)
admin.site.register(AttorneyGroupAdmin)
admin.site.register(SimpleHistoryAdmin)

Редактировать:

Вы правы в своем комментарии. Мой оригинальный код должен был показать, что вам не нужно делать каждую модель в одной строке. Я должен был быть более точным. Вы можете сделать это вместо этого:

from .models import AttorneyGroup, SimpleHistory

admin.site.register(AttorneyGroup, AttorneyGroupAdmin)
admin.site.register(SimpleHistory, SimpleHistoryAdmin)
Другие вопросы по тегам