Получите тип виджета формы Django из шаблона

В то время как я все еще хотел бы ответ на то, почему мой JavaScript не распознавался, решение я нашел тем временем (и должен был сделать во-первых), должен использовать Asp:CompareValidator вместо Asp:CustomValidator.

42
задан Oli 1 December 2013 в 09:51
поделиться

2 ответа

Может сработать создание тега шаблона? Что-то вроде 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 в шаблоне, поэтому я просто перенес всю эту логику в тег шаблона. Магия. Спасибо, что указали мне правильное направление.

43
ответ дан 26 November 2019 в 23:26
поделиться

В продолжение принятого ответа - расширенный 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>
35
ответ дан 26 November 2019 в 23:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: