Я хочу реализовать поле zipcode в django, используя объекты формы из localflavor , но не совсем заставить их работать. Я хочу иметь поле zipcode в форме (или ModelForm в моем случае), но поля никогда не проверяются как zipcode при вызове _get_errors () для объекта формы. То, как я реализую это, кажется мне правильным, но, по-видимому, неправильным, кто-нибудь знает, каким может быть правильный способ сделать это?
У меня есть ModelForm, в котором я хочу использовать почтовый индекс (а также USStateField) в:
from django.contrib.localflavor.us.forms import USStateField
from django.contrib.localflavor.us.forms import USZipCodeField
class FooForm(ModelForm):
class Meta:
model = Bar
fields = ('address', #This form uses a subset of fields from the model
'address_apt',
'address_city',
'address_state',
'address_zip',
'home_phone',
'mobile_phone')
widgets= {
'address_zip' : USZipCodeField(),
'address_state' : USStateField(),
}
ModelForm 'FooForm' ссылается на модель, которая выглядит следующим образом:
from django.contrib.localflavor.us import models as usmodels
class Bar(models.Model):
db_table = 'BAR'
address = models.CharField(max_length=255)
address_apt = models.CharField(max_length=40, blank=True)
address_city = models.CharField(max_length=90)
address_state = usmodels.USStateField()
address_zip = models.CharField(max_length=15)
home_phone = usmodels.PhoneNumberField( )
mobile_phone = usmodels.PhoneNumberField( )
#... There are more fields in the model...
Но если я создаю экземпляр формы и запускаю его проверку, он никогда не заботится о проверке уровня формы, только проверка уровня модели:
foo_instance = FooForm(request.POST)
#Let's assume request.POST looks like:
#<QueryDict: {u'address_city': [u'asdf'], u'mobile_phone': [u'asdf'], u'address_state': [u'California'], u'home_phone': [u'asdf'], [u'1'], u'address': [u'123 foo'], u'address_zip': [u'asdf']}>
foo_instance._get_errors ()
Урожайность:
<ul class="errorlist">
<li>mobile_phone<ul class="errorlist">
<li>Phone numbers must be in XXX-XXX-XXXX format.</li></ul>
</li><li>home_phone<ul class="errorlist">
<li>Phone numbers must be in XXX-XXX-XXXX format.</li></ul>
</li></ul>
Мне нужно иметь возможность вызывать проверку для заполненного объекта формы и попросить его сообщить мне, что почтовый индекс неправильно сформирован, если это так. Делать что-то не так, просто не знаю, что такое.