我用下面的代码动态显示我的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 }}
那你就知道什么是什么了。