2016-03-23 18 views
1

何が間違っているかを知るにはもう一度やっかいかもしれません。これはhtmlですDjango TypeError:__init __()は、キーワード引数 'required'に複数の値を持っています

class ImportPortfolioForm(forms.Form): 
    file = forms.FileField(required=True) 
    price_per_share = forms.BooleanField('Price per Share', required=False, initial=True, 
            help_text="If not checked, total cost is expected in Price column.") 

:私は簡単なフォームforms.pyを持っています

<form method="post" action="" class="wide" class="form-horizontal" enctype="multipart/form-data"> 
    <div class="col-md-6"> 
    {% csrf_token %} 
    {% bootstrap_form form %} 
    <button type="submit" class="btn btn-primary">Import</button> 
    </div> 
</form> 

、これはviews.pyです:

if request.method == 'POST': 
    form = ImportPortfolioForm(request.POST, request.FILES) 
    if form.is_valid(): 
     data = form.cleaned_data 
     # work with file ... 
else: 
    form = ImportPortfolioForm() 

私は、フォームのURLをロードしようとすると、私はエラーを取得しています:

TypeError: __init__() got multiple values for keyword argument 'required' 

このように必要なものを削除した場合:

class ImportPortfolioForm(forms.Form): 
    file = forms.FileField(required=True) 
    price_per_share = forms.BooleanField('Price per Share', initial=True, 
             help_text="If not checked, total cost is expected in Price column.") 

私はフォームURLを読み込むことができます。ファイルを追加してフォームを送信すると、1株あたりのフィールド価格が要求されます: image form upload この現象がなぜ発生するのかわかりません。私はrequest.POSTフォームの初期化で何とかフォームにrequired=Trueを追加要求すると思います。しかし、私はそれがなぜそうするのか、なぜそれをフォームで上書きできないのか分からない。何か案は?

答えて

5
... 
price_per_share = forms.BooleanField('Price per Share', required=False, initial=True) 

モデルフィールドのみが、最初の位置引数としてラベルを受け入れます。フォームフィールドでは、labelキーワードを使用する必要があります。 requiredはフォームフィールド用のfirst argumentなので、これを定位置引数とキーワード引数の両方として渡しています。

一般に、フォームフィールドでのみキーワード引数を使用します。あなたが探しているキーワードはlabel

price_per_share = forms.BooleanField(label='Price per Share', required=False, initial=True) 
+0

です。ありがとうございます! – Lucas03

関連する問題