简体   繁体   English

需要帮助Django中的ModelMultipleChoiceField错误

[英]Need help ModelMultipleChoiceField error in Django

I am using a ModelMultipleChoiceField to do something but I am getting an error saying: 我正在使用ModelMultipleChoiceField做某事,但出现错误:

AttributeError at /auth_users/

'MultipleChoiceField' object has no attribute 'all'

My form is: 我的表格是:

class AuthUserCheckbox(forms.Form):

    choice = forms.ModelMultipleChoiceField(queryset=User.objects.none(), widget=forms.CheckboxSelectMultiple, required=True)

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        user_email = self.user.email.split('@')[1]
        super(AuthUserCheckbox, self).__init__(*args, **kwargs)
        self.fields['choice'].queryset = forms.MultipleChoiceField(
            choices=[
                (i.email, i.email)
                for i in User.objects.filter(
                    is_active=False,
                    email__icontains=user_email
                )
            ]
        )

My view is: 我的看法是:

@login_required
def auth_users(request):
    if request.method == 'POST':
        form = AuthUserCheckbox(request.POST, user=request.user)
        if form.is_valid():
            AuthUserCheckbox.auth_users(form)
            return render(request, 'todoapp/success.html')
        else:
            return HttpResponse('<h3>Authorization failed</h3>')
    return render(request, 'todoapp/auth_users.html', context={'form': AuthUserCheckbox(user=request.user)})

Where am I going wrong ? 我要去哪里错了? this error has been bugging me a lot. 这个错误困扰着我很多。

You assign a MultipleChoiceField to the queryset of your ModelMultipleChoiceField , but you need to assign a queryset. 您将MultipleChoiceField分配给ModelMultipleChoiceField的queryset,但是您需要分配一个queryset。

For example like that: 例如这样的:

class AuthUserCheckbox(forms.Form):
    ...

    def __init__(self, *args, **kwargs):
        ...
        self.fields['choice'].queryset = User.objects.filter(
            is_active=False,
            email__icontains=user_email,
        )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM