【发布时间】:2012-08-27 10:38:53
【问题描述】:
我的 django ModelForm 中有一些必要的字段。如何在必填字段后添加红星 (*)?
【问题讨论】:
标签: django django-models modelform django-forms
我的 django ModelForm 中有一些必要的字段。如何在必填字段后添加红星 (*)?
【问题讨论】:
标签: django django-models modelform django-forms
我假设您希望这自动发生,所以这里有几种不同的方法之一:
{% for field in form %}
<label for="{{ field.auto_id }}">{{ field.label_tag }}
{% if field.field.required %}
<span class="required">*</span>
{% endif %}
</label>
{% endfor %}
然后您可以使用 CSS 设置星号样式。
或者,如果需要,您可以使用 CSS 添加星号:
<style type="text/css">
span.required:after { content: '*'; }
</style>
{% for field in form %}
<label for="{{ field.auto_id }}">
{% if field.field.required %}
<span class="required">{{ field.label_tag }}</span>
{% else %}
{{ field.label_tag }}
{% endif %}
</label>
{% endfor %}
如果您还想对必填字段进行其他操作,这可能是一个更好的选择。
但是,如果您不会单独访问字段(例如使用 {{ form.as_p }}),那么您可以将属性添加到您的 ModelForm:
class FooForm(forms.ModelForm):
required_css_class = 'required'
这会将所有必需的字段定义为具有“必需”类(因此,您可以使用我上面提到的 CSS 代码来添加星号(或您想要使用它执行的任何其他操作)。
【讨论】:
您也可以使用jQuery 来选择标签或附加到标签。
例如,如果你有这个引导表单
<form class="form-horizontal">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="inputEmail3" required="required">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3">
</div>
</div>
</form>
然后,如果您想将星号添加到必填字段。
$('input,textarea,select').filter('[required]').parent().parent().find("label").append("*");
您可能还想为必填字段标签指定一个类,以便将它们设为粗体或其他内容
$('input,textarea,select').filter('[required]:visible').parent().parent().find("label").addClass("required_label");
【讨论】: