Установите значение 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)
Вернуться на верх