2010-01-29 6 views
4

Django 모델에서 우편 주소를 나타내는 일반적인 방법은 무엇입니까? 우편 주소 필드를 포함하고 유효성 검사 및 서식을 처리 할 수있는 사용자 지정 모델 필드 용 라이브러리가 있습니까?Django 모델의 사용자 정의 주소 필드

라이브러리가 없으면 어떻게 쓸 수 있습니까? django에서 복합 필드 (db의 여러 열로 직렬화되는 필드)를 나타낼 수 있습니까? 희망은 이것이 합류하는 쿼리의 필요성을 제거한다는 것입니다.

답변

6

주소에 대한 단일 양식 필드에 대해 잘 모릅니다. 주소 필드 생성을 위해 localflavor을 사용하여 입력을 확인하고 MultiWidgetMultiValueField의 조합을 사용할 수 있습니다. 내 모습은 다음과 같습니다.

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)로 옮겨졌습니다.