2012-09-02 11 views

Odpowiedz

23

zamierzam zakładać, że chcesz to się stało automatycznie, więc tutaj jest jednym z kilku sposobów:

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

Następnie można projektować gwiazdkę za pomocą CSS.

Ewentualnie można dodać gwiazdkę przy użyciu CSS zamiast jeśli chcesz:

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

ten jest prawdopodobnie lepszym rozwiązaniem, jeśli chcesz robić inne rzeczy z polem wymaganym również.

Jednakże, jeśli nie będzie dostępu do pól indywidualnie (na przykład za pomocą {{form.as_p}}), a następnie można dodać obiekt do ModelForm:

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

To będzie określić wszystkie pola które są wymagane jako "wymagana" klasa (a więc możesz użyć kodu CSS, o którym wspomniałem powyżej, aby dodać gwiazdkę (lub cokolwiek innego, co z nią chcesz zrobić):

+1

używam {{}} form.as_p w moim szablonu i I nie ma dostępu do wymaganych pól w sposób, w jaki napisałeś Czy istnieje sposób na dostosowanie bloku HTML po niektórych polach w ModelForm? – Kozet

+0

@Kozet: {{form.as_p}} jest w porządku, jeśli jesteś zadowolony z kodu HTML, który generuje, ale jeśli chcesz go zmodyfikować, musisz napisać własny formularz HTML z każdym polem indywidualnie. –

+0

@Kozet: Zmieniono moją odpowiedź na twoją sytuację. – JoeLinux

0

Możesz również użyć numeru jQuery w celu , aby wybrać etykietę lub dołączyć do niej:

na przykład, jeśli masz ten formularz początkowy

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

Następnie, jeśli chcesz dodać gwiazdkę do wymaganych pól.

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

Również może chcesz określić klasę dla wymaganych pól etykiet, dzięki czemu można ich pogrubienie lub coś

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