对于从 CreateView 创建新帐户的新用户,将 is_staff 设置为 true

Set is_staff to true for new users that created new accounts from 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 管理员)。

我尝试在表单 class 内的 Meta class 中将 model.is_staff 设置为 true,但没有成功。

欢迎任何建议或想法。

谢谢

您可以在.form_valid(…)方法中将is_staff设置为True

class SignUpView(generic.CreateView):
    form_class = SignUpCustomUserForm
    success_url = reverse_lazy('login')
    template_name = 'registration/signup.html'
    
    def form_valid(self, form):
        form<strong>.instance.is_staff = True</strong>
        return super().form_valid(form)