Не удается зарегистрировать 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)