Python django自定义表单getting _init__;()最多接受2个参数(给定3个)错误

Python django自定义表单getting _init__;()最多接受2个参数(给定3个)错误,python,django,django-forms,Python,Django,Django Forms,我有以下表格: class QuestionForm(forms.Form): options = forms.ModelMultipleChoiceField(queryset=Option.objects.none(), widget=forms.RadioSelect) def __init__(self, question_id=None): if question_id:

我有以下表格:

class QuestionForm(forms.Form):
    options = forms.ModelMultipleChoiceField(queryset=Option.objects.none(), 
                                    widget=forms.RadioSelect)
    def __init__(self, question_id=None):
        if question_id:
            super(QuestionForm, self).__init__()
            question = Question.objects.get(pk=question_id)

            self.fields['options'].queryset = Option.objects.filter(question = question) 
在我看来,我正在调用表单以获取用户在帖子中选择的内容,如下所示:

if request.method == "POST":
        form = QuestionForm(request.POST, question.id)
        if form.is_valid():
            print form
然后我得到以下错误:

__init__() takes at most 2 arguments (3 given)

对于这一行:
form=QuestionForm(request.POST,question.id)
错误正是它所说的:您的
QuestionForm.\uuuu init\uuuuu
只接受两个参数(
self
question\uid
),但您给了它三个(
self
(它总是提供给实例方法),
request.POST
question.id
。您的
\uuuu init\uuuu
方法需要使用另一个参数才能工作,例如:

def __init__(self, method, question_id):

现在,它可以在所有情况下工作,而不仅仅是针对您的特定表单。

好吧,您的表单确实只包含两个参数;
self
question\id
,但是您的代码也会传入
request.POST
。@MartijnPieters我怎样才能让它也接收帖子,以便我可以验证表单?在您的表单中添加另一个参数
\uuuu init\uuuu
方法,也许?谢谢!方法参数是什么?调用时使用
request.POST
,所以我认为这个名称很合适。不过,您可以随意命名它。
def __init__(self, question_id=None, *args, **kwargs):
    super(QuestionForm, self).__init__(*args, **kwargs)