字段名称和帮助文本在Django中以多种形式消失

时间:2019-05-25 14:48:30

标签: python django django-models django-forms django-views

我有多种形式可以处理一个视图。 当我想在index.html中显示表单并指定字段时,例如{{form_1.some_field}} 所有帮助文本和字段名称都将消失!

当我使用{{ form_1}}时,一切运行正常。 出什么问题了?

这是我的文件:

index.html

<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>

forms.py

class Form1(ModelForm):
        class Meta:
            model = Model1
            fields = '__all__'
class Form2(ModelForm):
    class Meta:
        model = Model2
        fields = '__all__'

Views.py

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)

1 个答案:

答案 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(也是手动)。