2012-09-02 13 views

risposta

23

ho intenzione di assumere si vuole che questo accada automaticamente, quindi ecco uno dei pochi modi diversi:

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

Quindi è possibile lo stile l'asterisco usando i CSS.

In alternativa, è possibile aggiungere l'asterisco usando i CSS, invece, se si desidera:

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

Questa è probabilmente una scelta migliore se si vuole fare altre cose con il campo richiesto pure.

Tuttavia, se non sarà di accesso a campi singolarmente (come l'utilizzo di {{form.as_p}}), quindi è possibile aggiungere una proprietà alla ModelForm:

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

che definirà tutti i campi che sono richiesti come aventi la classe 'richiesta' (e quindi, puoi usare il codice CSS di cui sopra per aggiungere un asterisco (o qualsiasi altra cosa tu voglia fare)

+1

sto usando {{}} form.as_p nel mio modello e ho non posso accedere ai campi obbligatori nel modo in cui hai scritto C'è un modo per personalizzare un blocco html dopo alcuni campi in ModelForm? – Kozet

+0

@Kozet: {{form.as_p}} va bene se sei felice dell'HTML che genera, ma se vuoi modificarlo devi scrivere il tuo modulo HTML con ogni campo individualmente. –

+0

@ Kozet: modificato la mia risposta per la vostra situazione. – JoeLinux

0

Puoi anche usare jQuery in ordine per selezionare l'etichetta o aggiungerla

per esempio, se si dispone di questo modulo bootstrap

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

Poi, se si desidera aggiungere la stella per i campi obbligatori.

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

Inoltre si consiglia di specificare una classe per i campi obbligatori etichette in modo è possibile farli in grassetto o qualcosa

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