我正在用下面的代码动态显示我的django表单。
{% for field in form %}
{% if field.field.required %}
<span class="red">*</span>
{% endif %}
{{ field.label }}:
{{ field }}
{% endfor %}
现在我想知道fields的数据类型。如果字段类型是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 %}
提前帮助我。
答案 0 :(得分:4)
制作模板标签。取决于Get type of Django form widget from within template。我用了一两次这个解决方案。
from django import template
register = template.Library()
@register.filter('klass')
def klass(ob):
return ob.__class__.__name__
在模板中:
{{ field.field.widget|klass }}
将返回要在if语句中使用的字段类名称。
答案 1 :(得分:1)
您可以为此编写自定义模板过滤器。
@register.filter
def fieldtype(obj):
return obj.__class__.__name__
自定义过滤器的文档:link
但是,为什么不在没有循环的情况下渲染字段?
{{ form.birthdate }}
然后你会确切知道是什么。