使用 Django ModelForm 时标记必填字段的标签
Posted
技术标签:
【中文标题】使用 Django ModelForm 时标记必填字段的标签【英文标题】:Mark the label of required fields when using Django ModelForm 【发布时间】:2018-12-24 11:16:09 【问题描述】:当使用 Django 管理表单创建新对象或修改现有对象时,强制模型字段的 <label>
标记使用类属性 required
声明,例如
<div>
<label class="required" for="id_title">Title:</label>
<input class="vTextField" id="id_title" maxlength="255" name="title" type="text" required />
<p class="help">A title for this tool</p>
</div>
但是,在使用 Django ModelForm 时情况并非如此。模板文件中以下代码生成的 html 代码
<table>
toolForm.as_table
</table>
<label>
标签没有任何类属性,这将有助于为所需字段的标签设置适当的样式:
<table>
<tr>
<th>
<label for="id_title">Title:</label>
</th>
<td>
<input id="id_title" maxlength="255" name="title" type="text" required />
<br /><span class="helptext">A title for this tool</span>
</td>
</tr>
</table>
任何想法如何以有效的方式标记必填字段的标签?
【问题讨论】:
见this类似问题的想法 【参考方案1】:按照 Ralf 对 xj9 here 描述的类似问题的提示,以下解决方案对我来说很好:
<table>
% for field in toolForm %
<tr>
<th>
<label class="field-label% if field.field.required % field-required% endif %" for=" field.name "> field.label </label>
</th>
<td>
% if field.errors %<span class="field-error"> field.errors </span>% endif %
field <br/>
% if field.help_text %<span class="field-helptext"> field.help_text|safe </span>% endif %
</td>
</tr>
% endfor %
</table>
在所需字段名称旁边添加'*'
符号的相应 CSS 可能如下:
.field-label
font-weight: normal;
.field-helptext
font-size: 12px;
.field-error
font-size: 14px;
color: red;
.field-required
font-weight: bold;
.field-required:after
content: " *";
【讨论】:
以上是关于使用 Django ModelForm 时标记必填字段的标签的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django modelform 中的必填字段后添加 *?
将值传递给不是来自 Django ModelForm 中的输入的必填字段
Django ModelForm booleanfield 必填字段不起作用