我有多种形式可以处理一个视图。
当我想在index.html
中显示表单并指定字段时,例如{{form_1.some_field}}
所有帮助文本和字段名称都将消失!
当我使用{{ form_1}}
时,一切运行正常。 出什么问题了?
这是我的文件:
<form method="post" class="mos-rtl">
{% csrf_token %}
<div>
<h4 class="mos-rtl">Section 1</h4>
<p>{{ form_1.some_field }}</p>
</div>
<div>
<h4 class="mos-rtl">Section 2</h4>
{{ form_2.some_field }}
<button type="submit" >submit</button>
</div>
</form>
class Form1(ModelForm):
class Meta:
model = Model1
fields = '__all__'
class Form2(ModelForm):
class Meta:
model = Model2
fields = '__all__'
def my_view(request):
if request.method == "POST":
form_1 = Form1(request.POST)
form_2 = Form2(request.POST)
if form_1.is_valid() and form_2.is_valid():
new_record_1 = form_1.save(commit=False)
new_record_1.save()
new_record_2 = form_2.save(commit=False)
new_record_2.record_1 = new_record_1
new_record_2.save()
return redirect('administrator:view_admin_curriculum')
else:
form_1 = Form1(request.POST)
form_2 = Form2(request.POST)
template = 'index.html'
context = {'form_1': form_1, 'form_2': form_2}
return render(request, template, context)
答案 0 :(得分:1)
{{ form }}
调用form.__str__()
方法,另一方面调用form.as_table()
。因此,因此{{ form }}
和{{ form.as_table }}
以相同的方式呈现。
Form
类还支持不同类型的呈现方法,例如as_table()
,as_p()
,as_ul()
(这就是Form
对象应呈现为html)。所有这些方法实现都在BaseForm
类中,该类表示Form
的父类。这是source code。
因此,您应该尝试这样做:
<form method="post" class="mos-rtl">
{% csrf_token %}
<div>
<h4 class="mos-rtl">Section 1</h4>
<p>{{ form_1.some_field }} {{ form_1.some_field.help_text }}</p>
</div>
<div>
<h4 class="mos-rtl">Section 2</h4>
{{ form_2.some_field }} {{ form_2.some_field.help_text }}
<button type="submit" >submit</button>
</div>
</form>
如果您尝试像手动操作那样手动呈现Form
字段,则应该呈现表示字段属性的help_text(也是手动)。