python - Django 通过一种形式注册多个用户
问题描述
我想通过首先输入一些单词来注册多个用户,例如以“test_user”开头的名称和用户数“3”,它将创建用户“test_user1”、“test_user2”、“test_user3”
这是我的代码
视图.py
class CustomSignupView(SuccessMessageMixin, FormView):
form_class = UserCreateForm
success_url ="profile/"
template_name = "account/signup.html"
def form_valid(self, form):
usernames = []
username = form.cleaned_data['username']
stuNumber = form.cleaned_data['stuNumber']
if int(stuNumber) != 1:
for i in range(0, int(stuNumber)):
usernames.append(username + str(i + 1))
form.instance.username = usernames[i]
form.save()
else:
form.save()
return redirect(self.success_url)
表格.py
class UserCreateForm(forms.ModelForm):
username = forms.CharField(max_length=30, label='Username')
password = forms.CharField(label='Password')
stuNumber = forms.CharField(label='StuNumber')
class Meta:
model = user
fields = ['username', 'stuNumber']
def generate_password(self):
password = Account.objects.make_random_password(length=10)
return password
def save(self, commit=True):
user = super(UserCreateForm, self).save(commit=False)
user.set_password(self.cleaned_data['password'])
if commit:
user.save()
return user
问题是当我想创建 3 个用户并输入数字 3 时,它只为 user3 创建 1 个表单,没有 user1 和 user2。解决不了,求助,谢谢!!
解决方案
我认为这是因为您的表单实例在保存后只是在循环内更新而不是初始化一个新实例。以下应该可以工作,每次只需创建一个新的表单实例。
def form_valid(self, form):
usernames = []
username = form.cleaned_data['username']
stuNumber = form.cleaned_data['stuNumber']
if int(stuNumber) != 1:
for i in range(0, int(stuNumber)):
# handle if there are other fields
new_form = UserCreateForm({
'username':(username + str(i + 1)),
'stuNumber': i
})
if new_form.is_valid():
new_form.save()
else:
form.save()
return redirect(self.success_url)
推荐阅读
- express - 节点请求在控制台日志中显示 jwt 令牌,但无法在 cookie 中设置
- pointers - 在 Delphi 的泛型函数中分配对象的指针函数属性 - 为什么这段代码有效?
- php - 检查当前日期是否是 CET 和 CEST 之间的变化日
- ios - 当应用程序在苹果商店或 testFlight 上发布时,plist 中的框架版本号由 XCode 13 更改
- c++ - struct Snake { int x, y; 是什么意思?} 蛇[225]; 意思是?
- amazon-web-services - AWS - CloudFormation - 使用 CodestarSource 连接的 GitHub 完整克隆
- azure - Microsoft Graph API 在授予权限时出现未经授权的错误
- installation - SLES 10 SP4 iso 下载或我可以从哪里得到它?
- php - 在我的 laravel 项目中出现 yahoo 错误
- docker - 在 docker 容器中运行我的 selenium 客户端代码时出现“PKIX 路径构建失败”错误