Mam kilka niezbędnych pól w moim django ModelForm. Jak mogę dodać czerwoną gwiazdkę (*) po wymaganych polach?Jak dodać "Gwiazdkę" po modelu Django ModelForm CharField?
Odpowiedz
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ć):
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");
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
@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. –
@Kozet: Zmieniono moją odpowiedź na twoją sytuację. – JoeLinux