我遇到错误:
ValueError at /user-admin/manager/manager-add
Cannot assign "<QuerySet [<Groups: Codism>, <Groups: Codism>, <Groups: Codism123221>]>": "UserGroup.usergroup_group" must be a "Groups" instance.
Forms.py
class ManagerGroupForm(forms.ModelForm):
usergroup_group = forms.ModelMultipleChoiceField(queryset=Groups.objects.all())
class Meta:
model = UserGroup
fields = ['usergroup_group']
Views.py
@login_required
def ManagerAddView(request):
if request.method == 'POST':
random_password = User.objects.make_random_password() # generate password here
ur_form = ManagerRegisterForm(request.POST, pwd=random_password)
pr_form = ManagerProfileForm(request.POST, request.FILES)
gr_form = ManagerGroupForm(request.POST)
user_role = ACLRoles.objects.get(acl_role_title='Manager')
if ur_form.is_valid() and pr_form.is_valid() and gr_form.is_valid():
new_user = ur_form.save(commit=False)
new_user.username = new_user.email
new_user.set_password(random_password)
new_user.save()
profile = pr_form.save(commit=False)
if profile.user_id is None:
profile.user_id = new_user.id
profile.user_role_id = user_role.id
profile.user_company_id = request.user.userprofile.user_company.id
profile.save()
# newly added code
new_user_group = gr_form.save(commit=False)
new_user_group.usergroup_user_id = new_user.id
new_user_group.usergroup_created_by_id = request.user.id
new_user_group.usergroup_updated_by_id = request.user.id
new_user_group.save()
return redirect('admin_managers')
else:
ur_form = ManagerRegisterForm()
pr_form = ManagerProfileForm()
gr_form = ManagerGroupForm()
return render(request, 'users/admin/managers_form.html', {'ur_form': ur_form, 'pr_form': pr_form, 'gr_form': gr_form})
当我添加ManagerGroupForm()
时,实际问题就开始了,因为我想使用多重选择并且多重选择我在forms.ModelMultipleChoiceField
中使用了forms.py
。当我从forms.py usergroup_group=forms.ModelMultipleChoiceField(queryset=Groups.objects.all())
中删除此行时,它的工作原理很好。
实际上,由于此forms.ModelMultipleChoiceField
,错误即将来临,我想在Django中进行多次选择。
我认为我们应该使用for循环,但是问题是如何在view.py