Как добавить отдельное разрешение для выбранного ModelAdmin в Django wagtail подобно 'Page permissions'?
Я создаю приложение для управления преподаванием в Wagtail. Я создаю AdminModal для "Предметов". Я хочу разрешить доступ к выбранному предмету только выбранной группе пользователей. Точно так же, как "Разрешения страницы" в "Добавить группу". Не подскажете, как это сделать?
Во-первых, я предполагаю, что когда вы говорите AdminModal, вы на самом деле имеете в виду модель ModelAdmin для субъектов. Если это не так, не могли бы вы показать мне, откуда берется AdminModal?
Субъекту потребуется поле, которое вы сможете использовать для определения того, какая группа должна иметь возможность управлять им. Затем вам нужно будет настроить интерфейс администратора для вашей модели субъекта. В частности, вам нужно будет обеспечить некоторые разрешения - и создать несколько пользовательских методов get_queryset
, чтобы пользователям показывались только те субъекты, которые они могут редактировать. Начните с этой части документации и возвращайтесь, когда у вас появятся более конкретные вопросы: https://docs.wagtail.org/en/stable/reference/contrib/modeladmin/primer.html
Вы можете сделать это, переопределив get_queryset
метод в ModelAdmin
классе, который связан с Subject
моделью.
def get_queryset(self, request):
qs = super().get_queryset(request)
valid_subjects = ['subject1', 'subject2', 'subject3']
return qs.filter(subject_name__in=valid_subjects)
В приведенном выше примере показан способ ограничения пользователей по имени субъекта. Если вам нужно получить доступ к группе, вам необходимо иметь отношение между моделью Subject
и моделью Group
. Тогда все, что вам нужно сделать, это изменить запрос фильтра.
Подробнее о запросах вы можете узнать в этой документации.