Чтобы ограничить варианты раскрывающимся списком, используйте us.us_states.STATE_CHOICES
в вашей модели и us.forms.USStateField()
вместо us.forms.USStateSelect()
в ваших формах.
Чтобы сделать поле необязательным в форме, добавьте blank = True
к этому полю в модели.
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)
Вместо STATE_CHOICES
есть несколько параметров, которые вы можете найти в localflavor
документации .STATE_CHOICES
является наиболее всеобъемлющим, но это может быть не то, что вы хотите.Если вам просто нужно 50 штатов плюс DC, используйте US_STATES
.
. В этом ответе предполагается, что вы используете ModelForms .Если нет, то так и должно быть.После того, как вы создали свою модель, вы должны следовать DRY и создавать базовые формы, например, так:
from django.forms import ModelForm
class ExampleForm(ModelForm):
class Meta:
model = ExampleLocation
И он наследует ваши поля от вашей модели.Вы можете настроить доступные поля, если вам не нужна вся модель, с помощью других параметров class Meta
, таких как fields
или exclude
.Формы модели так же настраиваемы, как и любая другая форма, они просто начинаются с предположения о полях вашей модели.