Как ограничить определенные поля для определенных ролей в __init__ методе django forms.py? - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь ограничить поле в django ModelForm для определенных ролей пользователя, скажем, Сотрудник, а не для Администратора / Лидеров.Я мог бы отключить поле, которое я хотел.Но он отключен для всех пользователей.

Я попытался получить роль пользователя, упомянув request.role или self.user == "my_role" в методе init.Но не повезло.

Я повторяю этот вопрос, так как я не получил ответов.Похоже, что это не опубликовано должным образом.Мне жаль, если я повторяю это.Дубликат: Как получить текущую вошедшую в систему роль пользователя в init методе django forms.py?

forms.py

def __init__(self, *args, **kwargs):
   super(MyForm, self).__init__(*args, **kwargs)
   if not request.role == "Admin":
       self.fields['formfield'].disabled = True
   else:
       None

Я также пробовал,

from django.contrib.auth.models import User
def __init__(self, user, *args, **kwargs):
   self.user = kwargs.pop('user', None)
   super(MyForm, self).__init__(*args, **kwargs)
   self.fields['formfield'].queryset = User.objects.exclude(user=myrole)

Первый код работает.Но мое поле формы отключено для всех пользовательских ролей.Во втором коде, я думаю, мне следовало импортировать роли.Но я не уверен, как.

Может ли кто-нибудь здесь помочь мне ограничить определенные поля для определенных ролей?

...