{% for field in StaffForm %} <tr> <td width="200" style="text-align: right">{{ field.label }}</td> <td style="width: 1000px">{{ field }}</td> </tr> {% endfor %}怎么让这段代码循环输出的input框为只读?
时间: 2024-03-28 11:42:37 浏览: 16
你可以在循环中的`field`中添加一个`attrs`字典,将`readonly`属性设置为`True`,这样就可以将每个input框设置为只读。代码示例如下:
```
{% for field in StaffForm %}
<tr>
<td width="200" style="text-align: right">{{ field.label }}</td>
<td style="width: 1000px">{{ field|attr:"readonly:True" }}</td>
</tr>
{% endfor %}
```
在上面的代码中,`|attr`是模板过滤器,可以用来添加HTML属性。其中`"readonly:True"`表示将`readonly`属性设置为`True`。
相关问题
def staff_detail(request, nid): """ 员工个人详情页面 """ # 获取员工信息 staff_info 和它对应的 StaffForm staff_info = models.StaffInfo.objects.filter(RES_ID=nid).first() StaffForm = StaffStaticModelForm(instance=staff_info) # 获取员工对应的 Emergency 的集合 # emergency_info = models.Emergency.objects.filter(res_id=nid).all() # EmergencyForm = EmergencyStaticModelForm(instance=emergency_info) EmergencyFormSet = forms.inlineformset_factory(models.StaffInfo, models.Emergency, fields=('name', 'relation', 'address', 'tel'))(instance=staff_info) return render(request, "staff_detail.html", {"StaffForm": StaffForm, "EmergencyFormSet": EmergencyFormSet}) THML中是 <table class="table table-striped"> <thead> <tr> <th>紧急联系人</th> </tr> </thead> <tbody> {% for obj in EmergencyFormSet %} {% for field in obj %} {% if field.label != "res_id" %} <tr> <td width="200" style="text-align: right">{{ field.label }}</td> <td style="width: 1000px">{{ field }}</td> </tr> {% endif %} {% endfor %} {% endfor %} </tbody> </table>,为什么会输出几行空的紧急联系人
根据给出的代码,可能是因为在循环遍历 EmergencyFormSet 中的每个对象时,如果该对象中的某些字段的 label 值为 "res_id",则会跳过该字段,不输出对应的表格行。如果 Emergency 模型中存在名为 "res_id" 的字段,但其 label 值为其他值或为空,则会导致输出几行空的紧急联系人。建议检查 Emergency 模型中字段的 label 值是否都正确设置。
这么写报错了django.template.exceptions.TemplateSyntaxError: Invalid filter: 'attr'
很抱歉,可能是我之前的回答有误。在 Django 模板中没有名为 `attr` 的过滤器。
你可以使用 `widget` 属性来指定每个表单字段的小部件,然后在小部件上设置 `readonly` 属性。示例代码如下:
```
{% for field in StaffForm %}
<tr>
<td width="200" style="text-align: right">{{ field.label }}</td>
<td style="width: 1000px">{{ field.widget|attr:"readonly:True" }}</td>
</tr>
{% endfor %}
```
在上面的代码中,`field.widget` 指定了表单字段的小部件,`|attr:"readonly:True"` 用于在小部件上设置 `readonly` 属性。这样可以将每个表单字段设置为只读。