Python Django制造两个<;选择>;而不是一个,尝试使用引导(表单上传)
所以我试图用django创建一个网站,我遇到了一个问题,当我创建一个选择列表时,会出现两个 Html:Python Django制造两个<;选择>;而不是一个,尝试使用引导(表单上传),python,html,django,twitter-bootstrap,templates,Python,Html,Django,Twitter Bootstrap,Templates,所以我试图用django创建一个网站,我遇到了一个问题,当我创建一个选择列表时,会出现两个 Html: 我只需要引导选择,但似乎传递给它的值并不重要,它将第二个select语句作为输入 您必须调整表单类和模板 首先,如果你想让你的表单为你的课程设置一个select输入,你必须在表单上明确定义它。您的模型只包含一个CharField,默认情况下,您的表单也只提供一个CharField from django import forms from .models import courses as
我只需要引导选择,但似乎传递给它的值并不重要,它将第二个select语句作为输入 您必须调整表单类和模板 首先,如果你想让你的表单为你的
课程设置一个select输入,你必须在表单上明确定义它。您的模型只包含一个CharField
,默认情况下,您的表单也只提供一个CharField
from django import forms
from .models import courses as course_choices
FileForm(forms.ModelForm):
courseChoices = forms.ChoiceField(choices=course_choices)
class Meta:
model = FileUploads
fields = ('semesterChoices', 'document', 'courseChoices',)
请注意,您的表单现在有三个字段,其中一个被覆盖以使用ChoiceField
而不是CharField
,另一个被覆盖以使用默认表单字段作为相应的模型字段!如果你想为你的学期选择另一个选项字段
,你必须对该字段进行同样的操作
然后在模板中,您必须手动呈现
字段,如下所示:
{# stuff before your form #}
<form action="/upload/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
{{ form.non_field_errors }}
{{ form.courseChoices.errors }}
<select name="{{ form.courseChoices.name }}" id="{{ form.courseChoices.id_for_label }}" class="form-control">
{% for value, name in form.courseChoices.field.choices %}
<option value="{{ value }}">{{ name }}</option>
{% endfor %}
</select>
{{ form.document.errors }}
<label class="btn btn-default btn-file">
<input type="file" style="display: none;" name={{ form.document.name }} id={{ form.document.id_for_label }}>
</label>
</div>
</form>
{# stuff after your form #}
{表单前的内容}
{%csrf_令牌%}
{{form.non_field_errors}}
{{form.courseChoices.errors}
{%表示值,名称为form.courseChoices.field.choices%}
{{name}}
{%endfor%}
{{form.document.errors}
{#表格后面的东西#}
另请参阅有关的文档
我不知道文件输入是否可以像这样使用引导
您也可以通过向模板中添加{{form.as_p}}来呈现完整的表单,以查看表单的未样式
在您的模型中,您将field courseChoices命名为field courseChoices,这有点让人困惑,因为您实际上一次只在其中存储一门课程,这是您给它的选择之一。因此,称之为“课程”毫无意义。相反,您应该调用选项的元组course\u choices,而您的模型字段只是course
有一点旁注:
在python中,人们通常更喜欢蛇的大小写而不是骆驼的大小写。因此,如果您想调整编码风格,请使用课程选择
而不是课程选择
谢谢!这对我来说是成功的!我是Django的noob,这帮助我理解Django正在解压表单字段,为了使其符合我的要求,我必须手动渲染字段。
from django import forms
from .models import courses as course_choices
FileForm(forms.ModelForm):
courseChoices = forms.ChoiceField(choices=course_choices)
class Meta:
model = FileUploads
fields = ('semesterChoices', 'document', 'courseChoices',)
{# stuff before your form #}
<form action="/upload/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
{{ form.non_field_errors }}
{{ form.courseChoices.errors }}
<select name="{{ form.courseChoices.name }}" id="{{ form.courseChoices.id_for_label }}" class="form-control">
{% for value, name in form.courseChoices.field.choices %}
<option value="{{ value }}">{{ name }}</option>
{% endfor %}
</select>
{{ form.document.errors }}
<label class="btn btn-default btn-file">
<input type="file" style="display: none;" name={{ form.document.name }} id={{ form.document.id_for_label }}>
</label>
</div>
</form>
{# stuff after your form #}