django-templates:如何知道表单字段类型并根据字段类型添加任何按钮



我用下面的代码动态显示我的django表单。

{% for field in form %}
    {% if field.field.required %}
        <span class="red">*</span>
    {% endif %}
    {{ field.label }}:
    {{ field }}
{% endfor %}

现在我想知道字段的数据类型。如果字段类型是Datetimeinput,那么我想给它旁边一个按钮来获取JavaScript日历。

我想做如下,但我不能得到它

{% for field in form %}
    {% if field.field.required %}
        <span class="red">*</span>
    {% endif %}
    {% if field.field_type == 'Datetimeinput' %}
        {{ field.label }}:
        {{ field }}
        <label>From :</label><input type="text" name="from1" class="txtbox"><input type="button" value="Cal" onclick="displayCalendar(document.forms[0].from1,'yyyy-mm-dd',this)">
    {% else %}
        {{ field.label }}:
        {{ field }}
    {% endif %}
{% endfor %}

帮我一下,提前谢谢。

制作一个模板标记。取决于从模板中获取Django表单小部件的类型。我用过一两次这个解决方案。

from django import template
register = template.Library()
@register.filter('klass')
def klass(ob):
    return ob.__class__.__name__

在模板中:

{{ field.field.widget|klass }}

将返回要在if语句中使用的字段类名。

您可以为此编写一个自定义模板过滤器。

@register.filter
def fieldtype(obj):
    return obj.__class__.__name__

自定义过滤器上的文档:链接

但是,为什么不直接渲染场而不在其上循环呢?

{{ form.birthdate }}

那你就知道什么是什么了。

最新更新