1

ModelChoiceField を使用して動的フォームを作成していて、DB テーブルの 1 つの値を使用して初期化したいと考えています。問題は、フォームで __ init __ をオーバーライドすると、ビューで request.POST を使用できず、ユーザーが選択したオプションを検証して抽出する必要があることです。だから..フォームの _ init __ をオーバーライドした後、ビューで request.POST を使用する方法はありますか?

フォーム:

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)

VIEW : (このコード raise __ 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))
4

1 に答える 1

3

__init__それがかかるように*argsあなたを編集してください**kwargs

...

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

request.POSTフォーム クラスをインスタンス化するときに、通常どおりに渡すことができるはずです。

詳しくはこちらをご覧ください。

補足: 技術的には、Python のクラス名はキャメル ケースではなく大文字にする必要があります :)。

于 2013-03-24T00:10:24.497 に答える