Есть ли способ расширить другие приложения ModelAdmin?Django - Расширение других приложений ModelAdmin?
У меня есть проект, который использует функциональные возможности, предлагаемые django.contrib.comments.
CommentsAdmin ModelAdmin класс имеет:
actions = ["flag_comments", "approve_comments", "remove_comments"]
Я хотел бы продлить CommentsAdmin ModelAdmin в моем проекте включить действие ban_user
.
Я попытался создать свой собственный объект NewCommentsAdmin(CommentsAdmin)
в своем файле admin.py и зарегистрировать его, но я получаю уведомление 'AlreadyRegistered at /admin/' 'The model Comment is already registered'
.
class NewCommentAdmin(CommentAdmin):
actions = ['ban_user']
def ban_user(self, request, queryset):
pass
admin.site.register(Comment, NewCommentAdmin)
Есть ли способ сделать это без изменения исходного кода django.contrib.comments?
Ум, это намного сложнее, чем необходимо. Просто импортируйте CommentAdmin, подклассируйте его, отмените регистрацию один раз и зарегистрируйте свою версию. –
@ Карл Мейер: Вы уверены? Я попытался получить виджет карты Geodjango, работающий в интерфейсе. Для этого мне нужно было импортировать собственный пользовательский AdminModel, определенный в файле 'admin.py'. Когда я импортирую этот класс, функция 'admin.site.register' была выполнена снова. Это моя точка зрения. Когда вы пытаетесь импортировать класс, он пытается снова зарегистрировать модель.Сработали ли вы с успехом? Если есть другое решение, я более чем доволен здесь. –
Код уровня модуля выполняется только дважды, если модуль импортируется двумя разными путями. Как правило, этого не должно быть. Я не знаю, делает ли GeoDjango что-то напуганное, никогда не использовал его. См. Мой ответ для простой версии, что я работаю на производстве. –