not*_*oop 4 python django field django-models
在Django模型中代表邮政地址的常见做法是什么?是否有自定义模型字段的库,包括邮政地址字段并可能处理验证和格式化?
如果没有库,我怎么写一个?我可以在django中表示复合字段(在db中被序列化为多个列的字段)吗?希望这消除了加入查询的需要.
我不知道地址的单个表单字段,但您可以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)
...
Run Code Online (Sandbox Code Playgroud)
涉及的代码更多,但在此处粘贴有点多.这个信息应该让你朝着正确的方向前进.
注意:截至2013年11月21日,localflavor已移至外部包(可在PyPi上获得).
| 归档时间: |
|
| 查看次数: |
2792 次 |
| 最近记录: |