我正在寻找在django中使用来自localflavor的表单对象实现一个zipcode字段,但没有完全让他们工作。我想在表单中有一个zipcode字段(或者在我的例子中是ModelForm),但是在表单对象上调用_get_errors()时,字段永远不会验证为邮政编码。我实施它的方式对我来说似乎是正确的,但显然是错误的,是否有人知道正确的做法可能是什么?在django中实现USZipCodeField和USStateField
我有,我想使用邮编(也USStateField)一个的ModelForm:
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>
我需要能够调用填充表单对象验证和有它告诉我,邮编是,如果这样不正确格式化。做错了什么,只是不知道什么是atm。
是的好赶,这几乎是这里发生了什么。我在1.1。当我浏览从谷歌进来的文件,它默认为开发文档,所以必须更加小心:P ... django开发团队的荣誉,以添加与该功能并行的文档权:) – Purrell 2010-01-11 19:03:47