2012-09-02 12 views

Respuesta

23

voy a asumir que usted quiere que esto suceda de forma automática, así que aquí es una de las pocas maneras diferentes:

{% for field in form %} 
    <label for="{{ field.auto_id }}">{{ field.label_tag }} 
    {% if field.field.required %} 
     <span class="required">*</span> 
    {% endif %} 
    </label> 
{% endfor %} 

A continuación, puede estilo el asterisco el uso de CSS.

O, puede agregar el asterisco el uso de CSS en lugar si quieres:

<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 %} 

Ésta es probablemente una mejor opción si usted quiere hacer otras cosas con el campo requerido también.

Sin embargo, si no va a acceder a los campos de forma individual (como el uso de {{}} form.as_p), a continuación, se puede añadir una propiedad a su ModelForm:

class FooForm(forms.ModelForm): 
    required_css_class = 'required' 

que definirá todos los campos que se requiere que tengan la clase 'requerida' (y por lo tanto, puede usar el código CSS que mencioné anteriormente para agregar un asterisco (o cualquier otra cosa que quiera hacer con él).

+1

estoy usando {{}} form.as_p en mi plantilla y yo no puede acceder a los campos obligatorios en la forma en que escribió ¿Hay alguna manera de personalizar un bloque html después de algunos campos en ModelForm? – Kozet

+0

@Kozet: {{form.as_p}} está bien si está contento con el HTML que genera, pero si desea modificarlo, debe escribir su propio formulario HTML con cada campo individualmente. –

+0

@Kozet: Edité mi respuesta para su situación. – JoeLinux

0

También puede usar jQuery en orden para seleccionar la etiqueta o anexarla.

, por ejemplo, si tienen esta forma de arranque

<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> 

Entonces, si desea agregar la estrella para los campos obligatorios.

$('input,textarea,select').filter('[required]').parent().parent().find("label").append("*"); 

También es posible que desee especificar una clase para los campos requieren etiquetas para que pueda hacerlos negrita o algo

$('input,textarea,select').filter('[required]:visible').parent().parent().find("label").addClass("required_label"); 
Cuestiones relacionadas