【问题标题】:Mark the label of required fields when using Django ModelForm使用 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>

&lt;label&gt; 标签没有任何类属性,这将有助于为所需字段的标签设置适当的样式:

<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类似问题的想法

标签: css django django-models django-forms django-templates


【解决方案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: " *";
}

【讨论】:

    猜你喜欢
    • 2013-04-18
    • 2012-11-06
    • 2015-03-27
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2017-10-26
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多