我不知道地址只有一个表单域,但您可以使用
localflavor
验证输入和
MultiWidget
和
MultiValueField
用于创建地址字段。我的看起来像这样:
class SplitAddressWidget(forms.MultiWidget):
def __init__(self, attrs=None):
widgets = []
widgets.append(forms.TextInput(attrs=attrs))
widgets.append(forms.TextInput(attrs=attrs))
widgets.append(forms.TextInput(attrs=attrs))
widgets.append(forms.TextInput(attrs=attrs))
widgets.append(forms.TextInput(attrs=attrs))
super(SplitAddressWidget, self).__init__(widgets, attrs)
...
class SplitAddressField(forms.MultiValueField):
widget = SplitAddressWidget
def __init__(self, *args, **kwargs):
fields = (
forms.CharField(required=kwargs['required']),
forms.CharField(required=0),
forms.CharField(required=kwargs['required']),
USStateField(required=kwargs['required']),
USZipCodeField(required=kwargs['required']),
)
super(SplitAddressField, self).__init__(fields, *args, **kwargs)
...
涉及到更多的代码,但这里要粘贴的代码有点多。这个信息应该能让你朝正确的方向前进。
注:截至2013年11月21日,LocalFlavor已被转移到外部包装中。(
available on PyPi
)。