Задать вопрос
@Antoine

Как скрыть некоторые поля для отдельного пользователя в Django?

Есть стандартная админка Django. Есть некоторые зарегистрированные в ней модели. И есть несколько пользователей. Как сделать так, чтобы один пользователь мог видеть некоторые поля, а другой - нет?
Хотя бы взять простой слуачй, без особо гибкого конфигурирования. Допустим, заведомо известно, что есть пользователи, имеющие, скажем, "статус А" - он может видеть все поля, "статус Б" - часть полей, при этом поля можно задать статично, прямо в коде. Какие есть идеи?
  • Вопрос задан
  • 1625 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
syschel
@syschel
freelance/python/django/backend
Посмотри как джанго генерирует создание пользователя. Там функция на добавление пользователей, как раз и выводит только определённые поля.

class UserAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
        (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
                                       'groups', 'user_permissions')}),
        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )

    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'password1', 'password2'),
        }),
    )
    def get_fieldsets(self, request, obj=None):
        if not obj:
            return self.add_fieldsets
        return super(UserAdmin, self).get_fieldsets(request, obj)

Если объект уже создан, то выводит стандартный набор из кортежа fieldsets.
В общем, переопределяй get_fieldsets()
Ответ написан
Ваш ответ на вопрос

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

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