如何在Django模板中检测表单元素的类型?

时间:2014-02-04 16:22:14

标签: django django-forms django-templates

我正致力于渲染表单模板。相关代码是这样的:

{% for field in filter.form %}
  {% if field.is_hidden %}
    {{ field }}
  {% else %}
    <div class="field">
        {{ field }}
    </div>
  {% endif %}
{% endfor %}

到目前为止,这么好。如果它是隐藏字段,只需显示该字段。如果没有,请使用类field的div包装器从我正在使用的框架中激活一些CSS。

但是,如果字段是选择框,我需要div包装器中的该类为picker。如果是选择多个框,则需要picker-multiple。等等。

这可以在模板视图中执行吗?我们正在使用一个框架(这就是为什么我不想仅仅使用CSS以不同的方式定位表单字段),但我们希望核心代码在没有框架的情况下工作(我认为这就是为什么我们不能我不想在单独的Python文件中做这种事情。)

至于我尝试的内容,我注意到{{ field.field.widget }}呈现<django.forms.widgets.Select object at 0x10d822a50>之类的内容。我希望{{ field.field.widget.Select }}能够呈现某些内容True会想到),但它什么也没做。

2 个答案:

答案 0 :(得分:2)

django-widget-tweaks包含field_type和widget_type模板过滤器。

答案 1 :(得分:1)

我认为您必须使用自定义模板标记作为详细here。此answer解释了使用自定义模板标记的解决方案的类似问题。