Aby ograniczyć opcje do listy rozwijanej, należy użyć modelu us.us_states.STATE_CHOICES
w swoim modelu i użyć us.forms.USStateField()
zamiast us.forms.USStateSelect()
w swoich formularzach.
Aby pole opcjonalne w formularzu, należy dodać blank = True
do tego pola w modelu.
from django.contrib.localflavor.us.us_states import STATE_CHOICES
from django.contrib.localflavor.us.models import USStateField
class ExampleLocation(models.Model):
address1 = models.CharField(max_length=45) #this is not optional in a form
address2 = models.CharField(max_length=45, blank = True) #this is made optional
state = USStateField(choices = STATE_CHOICES)
Zamiast STATE_CHOICES
, istnieje kilka opcji można znaleźć in the localflavor
documentation. STATE_CHOICES
jest najbardziej wszechstronnym, ale może nie być tym, czego pragniesz. Jeśli potrzebujesz tylko 50 stanów plus DC, użyj US_STATES
. Ta odpowiedź zakłada, że używasz ModelForms. Jeśli nie jesteś, powinieneś. Po wprowadzeniu modelu, należy postępować suche i tworzyć podstawowe formy tak:
from django.forms import ModelForm
class ExampleForm(ModelForm):
class Meta:
model = ExampleLocation
A dziedziczy swoje pola od modelu. Możesz dostosować dostępne pola, jeśli nie chcesz, aby cały model był dostępny z innymi opcjami class Meta
, takimi jak fields
lub exclude
. Formy modeli są tak samo konfigurowalne, jak każda inna forma, po prostu zaczynają się od założenia pól modelu.
Czy możesz opublikować kod dla swojej klasy formularza? –
view eidts thanks – Eva611