В то время как я все еще хотел бы ответ на то, почему мой JavaScript не распознавался, решение я нашел тем временем (и должен был сделать во-первых), должен использовать Asp:CompareValidator
вместо Asp:CustomValidator
.
Может сработать создание тега шаблона? Что-то вроде field.field.widget | widget_type
Правка от Оли: Хорошая мысль! Я только что написал фильтр:
from django import template
register = template.Library()
@register.filter('klass')
def klass(ob):
return ob.__class__.__name__
И теперь {{object | klass}}
отображается правильно. Теперь мне просто нужно выяснить, как использовать это внутри оператора if
в шаблоне.
Правка из Оли # 2: мне нужно было использовать результат этого в выражении if в шаблоне, поэтому я просто перенес всю эту логику в тег шаблона. Магия. Спасибо, что указали мне правильное направление.
В продолжение принятого ответа - расширенный if tag
в Django 1.2 позволяет использовать фильтры в if tag
сравнениях. Итак, теперь вы можете сделать свой собственный html / логику в шаблоне следующим образом:
<ul>
{% for field in form.fields %}
<li>
{% if field.field.widget|klass == "Textarea" %}
<!-- do something special for Textarea -->
<h2>Text Areas are Special </h2>
{% else %}
{{ field.errors }}
{{ field.label_tag }}
{{ field }}
{% endif %}
</li>
{% endfor %}
</ul>