Пользователи Django управляют только своими пользователями, которых они создали - PullRequest
0 голосов
/ 06 февраля 2019

В моем приложении Django пользователь может зарегистрироваться на сайте и получить привилегии staff_user от администратора.После этого штатный пользователь может создавать и управлять некоторыми другими пользователями (обычными пользователями), используя сайт администратора по умолчанию django.Теперь я бы хотел, чтобы штатный пользователь мог видеть и управлять только теми пользователями, которых он создал на сайте администратора. Я не хочу, чтобы он видел других пользователей, созданных другим сотрудником.

как я могу это сделать?Я полагаю, мне нужно изменить admin.py правильно?

Я использую версию Django 1.11

1 Ответ

0 голосов
/ 06 февраля 2019

Да, вам нужно переопределить несколько методов в вашем admin.py.Необходимо применить следующие вещи:

  1. Обновление модели пользователя для добавления поля созданного_байя
  2. Переопределение метода сохранения в админке для установки поля созданного_байя
  3. Переопределение полученияМетод набора запросов для фильтрации списка пользователей на основе созданного_байя.

    class ProfileAdmin(admin.ModelAdmin):
        list_display = ("username",)
        model = Profile
    
    
        def get_queryset(self, request):
            qs = super().get_queryset(request)
            if request.user.is_superuser:
                return qs
    
            return Profile.objects.filter(created_by=request.user) or qs.none()
    
    
    
        def save_model(self, request, obj, form, change):
            if change:
                obj.modified_by = request.user
            else:
                obj.created_by = request.user
    
            obj.save()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...