Django ModelForm:访问视图模板中的字段值

时间:2009-10-29 17:49:30

标签: django django-templates django-forms

问:是否可以在模板中提取我的某个ModelForm字段的值?如果是这样,怎么样?

背景 我有一个搜索表单,我用它来允许用户过滤查询结果。并且,结果表以及表单可以导出到Excel工作表。当使用新结果呈现页面时,搜索表单的输入值仍然保持不变。但是,它们仍然包含在表单的每个输入字段的字段对象中。因此,在导出到Excel期间,搜索表单的值不会被抓取,因为不在其自己的表格单元格中。所以,我想在包含字段值的字段列之后添加一列(但不显示此列)。

可以解析字段的HTML字符串并抓取value属性中的任何内容,但我只是作为最后的手段。到目前为止,我已经能够访问我的表单的数据字典并获得我想要的任何字段的对象,但我还没有弄清楚我可以使用哪种方法来实际获取字段的值。

3 个答案:

答案 0 :(得分:8)

仅当表单有效时,表单才具有属性cleaned_data。 如果要访问Form的某个字段的值,您只需在模板中写入:

{{ form.data.%field_name% }}

答案 1 :(得分:5)

由于您尝试从填写的表单中获取此数据,我认为最简单的方法是将表单.cleaned_data传递给模板并使用它。假设您有一个包含字段namespecialty的表单,它看起来像这样:

def my_view(request):
    form = my_form(request.GET)
    if form.is_valid():
        ... do search stuff ...
        search_query = form.cleaned_data
        return render_to_response('my_template.html', {'search_query': search_query, 'search_results': ...,}, ...)

然后,在您的模板中,您只需提取所需的值:

<tr>
  <th>Name</th>
  <th>Specialty</td>
</tr>
<tr>
  <td>{{ search_query.name }}</td>
  <td>{{ search_query.specialty }}</th>
</tr>

或者您将其格式化为Excel。

答案 2 :(得分:5)

尝试以下操作:{{ form.a.value }}