/ Django的ValueError

时间:2019-01-09 12:18:54

标签: django django-models django-forms django-templates django-views

我遇到错误:

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

中使用它

0 个答案:

没有答案