对我来说,找出错误可能为时已晚。我有一个简单的表单forms.py
:
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.")
这是html:
<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()
如果我尝试加载表单网址,我收到错误:
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.")
我可以加载表单网址。如果我添加文件和发送表单,则声明每个字段的场地价格是必需的:
我不知道为什么会出现这种情况。我想request.POST在表单初始化中以某种方式将required=True
添加到表单中。但我不知道为什么会这样做或为什么我不能在表格中覆盖它。有什么想法吗?
答案 0 :(得分:6)
...
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)