use*_*019 7 django django-templates django-forms
我一直在用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
Run Code Online (Sandbox Code Playgroud)
这就是我将这些属性附加到该领域的方式.
<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>
Run Code Online (Sandbox Code Playgroud)
我一直在尝试访问它的属性:
class="{{form.id_diagnosis.class}}", class="{{form.id_diagnosis.widget.class}}"
Run Code Online (Sandbox Code Playgroud)
我似乎没有找到关于什么是可访问的和什么不可访问的明确文档.真的,我宁愿拥有旧的时尚文件而不是django"友好"的文件
小智 10
看起来您只想显示每个字段的表单错误.在视图中清除或验证表单后,字段应包含错误消息.这样你就可以在模板中显示它们,如下所示:
<form action='.' method='post'>
...
<div class='a-field'>
{{ form.field_1.errors|join:", " }}
{{ form.field_1.label_tag }}
{{ form.field_1 }}
</div>
...
</form>
Run Code Online (Sandbox Code Playgroud)
但是,如果您确实想要显示表单字段属性,那么您可以尝试以下方法:
{{ form.field_1.field.widget.attrs.maxlength }}
Run Code Online (Sandbox Code Playgroud)
ian*_*aré 10
在其他情况下,设置和获取字段属性可能很有用.
在表单的init函数中设置:
self.fields['some_field'].widget.attrs['readonly'] = True
Run Code Online (Sandbox Code Playgroud)
...并在模板中访问它:
{{ form.some_field.field.widget.attrs.readonly }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10871 次 |
| 最近记录: |