Как использовать django группы для установки разрешения группы - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу использовать django группы, предоставленные в группах пользователей. Групповые разрешения django установлены в админ-панели. Предположим, я создал две группы учителей и учеников. Я хочу установить разрешения на уровне просмотра c. Некоторые виды могут быть только для просмотра или могут редактировать ученик или учитель. Эти разрешения были установлены в django admin следующим образом: enter image description here

Теперь я создал представление создания следующим образом:

class CreateQuestionView(LoginRequiredMixin,generic.CreateView):
	model =   Question
	success_url= reverse_lazy('questions:list')
	fields = ['title','description' ]
	def form_valid(self,form):
		form.instance.user = self.request.user
		#self.object.save()
		return super().form_valid(form)

Теперь я хочу, чтобы этот вид был доступен только для групп учителей. Я не могу найти правильный способ реализации группового разрешения. Что-то вроде @group_required может работать в этом случае link , но не может найти любую связанную документацию. Как правильно это реализовать?

1 Ответ

1 голос
/ 06 апреля 2020

Вы хотите PermissionRequiredMixin :

class CreateQuestionView(LoginRequiredMixin, PermissionRequiredMixin, generic.CreateView):
    permission = "yourapp.perm_code_name"
    model =   Question
    success_url= reverse_lazy('questions:list')
    fields = ['title','description' ]
    def form_valid(self,form):
        form.instance.user = self.request.user
        #self.object.save()
        return super().form_valid(form)

Обратите внимание, что вы НЕ хотите проверить, принадлежит ли ваш пользователь данной группе (при условии, что эта группа имеет Speci c Пермь) - это антипаттерн. Все, что вас волнует, - есть ли у вашего пользователя требуемая пермиссия, однако он имеет ее.

...