[英]Django sign up multiple users by one form
我想通過首先輸入一些單詞來注冊多個用戶,例如以“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)
forms.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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.