Как добавить метод каждому admin.ModelAdmins? - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь получить 2 ссылки в представлении списка изменений администратора (изменение и просмотр) на основе Django разрешений («можно изменять» и «можно редактировать») на каждой имеющейся у меня модели.

I хочу иметь общий c способ и не хочу копировать код во всех моих ModelAdmins. Как я могу это сделать?

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('admin_action_column', 'name')

    # get user to changelist view (permission checks)
    def changelist_view(self, request, *args, **kwargs):
        self.user = request.user
        return super().changelist_view(request, *args, **kwargs)

    def admin_action_column(self, obj):
        admin_link_s = ""
        app_label = self.model._meta.app_label
        model_name = self.model._meta.model_name
        if self.user.has_perm(f'{app_label}.view_{model_name}'):
            admin_link_s += obj.admin_get_view_link()
        if self.user.has_perm(f'{app_label}.change_{model_name}'):
            admin_link_s += obj.admin_get_change_link()
        return mark_safe(admin_link_s)
    admin_action_column.short_description = ''

admin.site.register(MyModel, MyModelAdmin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...