在模板化Django中访问表单字段属性

在模板化Django中访问表单字段属性,django,django-forms,django-templates,Django,Django Forms,Django Templates,我用django做了一些自定义表单,但我不知道如何访问特定表单字段通过forms.py附加的属性 def putErrorInTitle (cls): init = cls.__init__ def __init__ (self, *args, **kwargs): init(self, *args, **kwargs) if self.errors: for field_error in self.errors: self.fields

我用django做了一些自定义表单,但我不知道如何访问特定表单字段通过forms.py附加的属性

def putErrorInTitle (cls):
init = cls.__init__

def __init__ (self, *args, **kwargs):
    init(self, *args, **kwargs)
    if self.errors:
        for field_error in self.errors:
            self.fields[field_error].widget.attrs['title'] = self.errors[field_error][0]
            self.fields[field_error].widget.attrs['class'] = "help_text error_field"

cls.__init__ = __init__
return cls
我就是这样把这些阁楼贴在地上的

<dl class="clearfix two">
 <dd>
  <label for="id_diagnosis">Diagnostico:</label>
   <select class="{{form.id_diagnosis.class}}" id="id_equipment_activity-{{ forloop.counter0 }}-id_diagnosis" name="equipment_activity-{{ forloop.counter0 }}-id_diagnosis">
    {% for x,y in form.fields.id_diagnosis.choices %}
    <option value="{{ x }}" {% ifequal form.id_diagnosis.data|floatformat x|floatformat %}selected="selected"{% endifequal %}>{{ y }}</option>
    {% endfor %}
    <option value="1000" {% ifequal form.id_diagnosis.data|floatformat '1000'|floatformat %}selected="selected"{% endifequal %}>Otro</option>
   </select>
 </dd>
 <dd class="vertical_center" id="optional_diagnosis"><label for="optional_diagnosis">Diagnostico opcional:</label>{{ form.optional_diagnosis }}</dd>
</dl>

我似乎找不到关于什么是可访问的和什么不是的清晰文档。实际上,我宁愿使用老式的文档,也不愿使用django“友好”的文档。看起来您只是想显示每个字段的表单错误。 在视图中清理或验证表单后,字段应包含 错误消息。以便您可以在模板中显示它们,如下所示:

<form action='.' method='post'>
    ...
    <div class='a-field'>
       {{ form.field_1.errors|join:", " }}
       {{ form.field_1.label_tag }}
       {{ form.field_1 }}
    </div>
    ...
</form>

在其他情况下,设置和获取字段属性可能很有用

在窗体的init函数中设置:

self.fields['some_field'].widget.attrs['readonly'] = True
。。。并在模板中访问它:

{{ form.some_field.field.widget.attrs.readonly }}

上面的答案是正确的,但是,我想为那些在循环中访问表单字段的人添加一个注释

如果你在这样的循环中做这件事

{% for field in form %}
    {{ field.field.widget.attrs.placeholder }} # field.field is the key here
{% endfor %}

谢谢你建议他走错误路线,但仍然回答问题。
{{ form.some_field.field.widget.attrs.readonly }}
{% for field in form %}
    {{ field.field.widget.attrs.placeholder }} # field.field is the key here
{% endfor %}