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

kaf*_*hau 4 django django-templates django-forms

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

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

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

小智 8

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

{{ form.data.%field_name% }}


tgh*_*ghw 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': ...,}, ...)
Run Code Online (Sandbox Code Playgroud)

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

<tr>
  <th>Name</th>
  <th>Specialty</td>
</tr>
<tr>
  <td>{{ search_query.name }}</td>
  <td>{{ search_query.specialty }}</th>
</tr>
Run Code Online (Sandbox Code Playgroud)

或者您为Excel格式化它.


Sev*_*ths 5

尝试以下方法: {{ form.a.value }}