4
在Django模型中表示郵政地址的常見做法是什麼?是否有自定義模型字段的庫,其中包含郵政地址字段並可能處理驗證和格式設置?Django模型中的自定義地址字段
如果沒有圖書館,我該怎麼寫?我可以在django中表示一個複合字段(一個字段可以序列化爲db中的多列)嗎?希望是這消除了加入查詢的需要。
在Django模型中表示郵政地址的常見做法是什麼?是否有自定義模型字段的庫,其中包含郵政地址字段並可能處理驗證和格式設置?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)
...
還有更多的代碼參與,但它有點粘貼在這裏。這個信息應該讓你朝着正確的方向前進。
注意:截至2013年11月21日,localflavor已被移至外部軟件包(available on PyPi)。