如何在django ModelForm CharField之后添加'Star *'?

时间:2012-09-02 10:26:40

标签: django django-models modelform django-forms

我的django ModelForm中有一些必要的字段。如何在必填字段后添加红色星号(*)?

2 个答案:

答案 0 :(得分:24)

我会假设你希望这种情况自动发生,所以这里有几种不同的方式:

{% 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'

这将定义具有'required'类所需的所有字段(因此,您可以使用我上面提到的CSS代码添加星号(或者您想要用它做的任何其他内容)。

答案 1 :(得分:0)

您还可以使用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");