对于从 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)
我在使用 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)