Django - 在覆盖我的表单的__init__方法后在我的视图中使用request.POST

时间:2013-03-23 22:30:51

标签: django forms dynamic views

我正在使用ModelChoiceField执行动态表单,我想使用其中一个数据库表的值对其进行初始化。问题是,如果我在表单中覆盖__ init __,那么我不能在我的视图中使用request.POST,我需要它来验证和提取用户选择的选项。那么..在覆盖我的表单的_ init __后,在我的视图中有一些方法可以使用request.POST吗?

FORM

categoria_formfield = forms.ModelChoiceField(widget=forms.Select(attrs={'size':'13', 'onchange':'this.form.action=this.form.submit()'}), queryset=sitio_categoria.objects.none())

def __init__(self):
        super(anadirComercioPaso1_form, self).__init__()
        self.fields['categoria_formfield'].queryset = sitio_categoria.objects.exclude(categoria='patrimonio').values_list('categoria',flat=True)

查看: (此代码引发__ init __()只需要1个参数(给定2个)错误。)

def panelComerciante_view(request):
        is_validated=False
        if request.method == 'POST':
            formulario_anadir_comercio_paso1 = anadirComercioPaso1_form(request.POST)
            if formulario_anadir_comercio_paso1.is_valid():
                is_validated=True
        else:
            formulario_anadir_comercio_paso1 = anadirComercioPaso1_form()
        return render_to_response('home/anadir_comercio_step1.html',{'formulario_anadir_comercio_paso1': formulario_anadir_comercio_paso1, 'pepe':pepe}, context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:3)

修改您的__init__,以便*args**kwargs

...

def __init__(self, *args, **kwargs):
    super(anadirComercioPaso1_form, self).__init__(*args, **kwargs)

现在,您应该能够在实例化表单类时正常传递request.POST

详细了解here

旁注:从技术上讲,Python类名应该是capitalised而不是驼峰案例:)。