@DennyD314

Как добавить примесь к UserAdmin?

Всем привет !
Есть миксин ? обеспечивающий возможность добавлять право на просмотр объектов в админке django.
Использовал в нескольких моделях. Не получается использовать с UserAdmin.

from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth import get_user_model

class AdminMixin(admin.ModelAdmin):
    def has_change_permission(self, request, obj=None):
        change_permission = super(AdminMixin, self).has_change_permission(request, obj)
        if change_permission:
            self.readonly_fields = AdminMixin.readonly_fields
            return True
        if request.user.has_perm('{}.view_{}'.format(self.model._meta.app_label, self.model._meta.object_name.lower())):
            self.readonly_fields = self.model._meta.get_all_field_names()
            return True
        return False


UserModel = get_user_model()

class UserAdmin(BaseUserAdmin, AdminMixin):
    pass

admin.site.unregister(UserModel)
admin.site.register(UserModel, UserAdmin)
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ответы на вопрос 3
crazyzubr
@crazyzubr
Python backend-developer
class UserAdmin(AdminMixin, BaseUserAdmin):
    pass
Ответ написан
Поменяйте местами базовые классы.

class UserAdmin(AdminMixin, BaseUserAdmin):
    pass
Ответ написан
@DennyD314 Автор вопроса
Весь день тупил, а дело было в том, что в админке используется не стандартный UserAdmin, a HijackUserAdmin, после установки Hijack.

Вот так все заработало.

class UserAdmin(AdminMixin, HijackUserAdmin):
pass
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы