如何在django模板中获取BoundField的值?

时间:2010-11-30 03:11:38

标签: django django-forms

Django表单中内置的as_html,as_ul,as_p方法对我不起作用,内置{{field}}呈现也不起作用,所以我正在尝试编写自定义表单呈现。

这是我到目前为止所拥有的:

    <input id="id_{{field.html_name}}" 
                   type="text"
                   name="{{field.html_name}}"
                   placeholder="{{field.label}}"  <!-- "placeholder" is really the only reason I need to do a custom implementation -->
                   value="{{ XXX }}"      <!-- what goes here? -->
                   maxlength="30"  />

问题是,应该在value属性中添加什么(上面标记为XXX)?

我已经完成了一些调查,BoundField似乎不支持valuedata属性。如果重要,我正在使用ModelForms

3 个答案:

答案 0 :(得分:3)

value属性降落在主干in 2010中。该补丁显示了如何使用表单/数据检索值(不幸的是,在模板中不简单)。您可能会发现有用的故障单注释中有一些模板标记代码段。

答案 1 :(得分:1)

我试着在几个小时内找到这个问题的答案。上面的答案对我没有帮助。

我在这里找到了解决方案: http://djangosnippets.org/snippets/2264/

您需要添加新目录:/ yourproject / yourapp / templatetags /

在/ yourproject / yourapp / templatetags /中放置2个文件:

__ init__.py - 空文件

field_value.py - 使用以下代码:

from django import template
register = template.Library()

@register.simple_tag
def field_value(field):
    """ returns field value """
    return field.form.initial.get(field.name, '')

在模板的开头,您需要添加:

{% load field_value %}

您想要输出您需要添加的字段值的位置:

{% field_value form.field %}

或者,如果您已经有一个“字段”变量,那么只需:

{% field_value field %}

对我来说,这是一个内联形式的名称为“text”的字段,所以我添加了以下代码

{% field_value inline_admin_form.form.text %}

答案 2 :(得分:0)

假设字段名称是&#34;用户名&#34;表单名称为&#34; user_form&#34;,有两个值:

1)初始:

{{ user_form.initial.username }}

2)绑定:

{{ user_form.username.data }}