Установите значение is_staff в true для новых пользователей, которые создали новые учетные записи из CreateView
У меня проблема с Django.
Я использую UserCreationForm и общий CreateView для того, чтобы люди могли зарегистрироваться и создать аккаунт. Код выглядит следующим образом:
Пользовательская форма:
class SignUpCustomUserForm(UserCreationForm):
first_name = forms.CharField(max_length=200)
last_name = forms.CharField(max_length=200)
email = forms.EmailField(max_length=200)
class Meta:
model = User
fields = ['first_name', 'last_name', 'username', 'email', 'password1', 'password2']
Вид:
class SignUpView(generic.CreateView):
form_class = SignUpCustomUserForm
success_url = reverse_lazy('login')
template_name = 'registration/signup.html'
У меня нет модели, так как я использую CreateView, который в основном работает с моделью.
Я хочу автоматически устанавливать каждую новую созданную учетную запись как персонал, но я не могу понять, как это сделать. По сути, я работаю над формой, которую пользователи могут использовать для создания учетной записи с привилегиями is_staff, и они могут использовать эти учетные записи для входа в /admin (стандартная админка django).
Я пробовал установить model.is_staff в true в классе Meta внутри класса формы, но это не сработало.
Любые советы или идеи приветствуются.
Спасибо
Вы можете установить is_staff в True методом .form_valid(…):
class SignUpView(generic.CreateView):
form_class = SignUpCustomUserForm
success_url = reverse_lazy('login')
template_name = 'registration/signup.html'
def form_valid(self, form):
form.instance.is_staff = True
return super().form_valid(form)