2009-07-26 3 views
5

같은 장고 LocalFlavor 우편 작업 : 나는 단지 models.py 파일을 수정하여 US Zip Codes Field form widget/validator를 사용하는 최종 결과를 얻으려고다음 구현하는 가장 좋은 방법은 무엇 모델 필드

### models.py 
>>> from django.db import models 
>>> from django.contrib.auth.models import User 
# Create the client class. 
>>> class Client(models.Model): 
...  user = models.OntToOneField(User) 
...  zip = ***???***() 

### forms.py 
>>> from django.forms import ModelForm 
# Create the form class. 
>>> class ArticleForm(ModelForm): 
...  class Meta: 
...   model = Client 

.

### forms.py 
>>> from django.forms import ModelForm 
>>> from django.contrib.localflavor.us.forms import USZipCodeField 
# Create the form class. 
>>> class ArticleForm(ModelForm): 
...  class Meta: 
...   model = Client 
...  zip = USZipCodeField() 

참고 : .. 일명 나는 다음을 수행하지 않으려는 가장 좋은 방법은이 경우 ... 위의 그림과 같이이 forms.py 파일에 달성하는 것을 수 있습니다 , 나는 그것이 사용자 정의 모델 필드 (예 : DRY?) 대신에 갖는 인수/이점을 놓치고 있다고 생각합니다. loose coupling?)이 시나리오에서 models.py에 비해 forms.py의 이점을 더 잘 이해하는 데 도움이되는 모든 도움을 주시면 감사하겠습니다.

미리 감사드립니다. -Tom

답변

5

우편 번호는 단지 숫자/문자 열이므로 데이터베이스에 저장하기위한 사용자 정의 필드를 정의 할 필요가 없습니다. 현재 Django에는 모델 수준의 유효성 검사가 없습니다 (추가 할 Google Summer of Code 프로젝트가 있음에도 불구하고). 따라서 사용자 정의 모델 필드는 아무 것도 추가하지 않습니다. 유효성 검사는 양식 수준에서 이루어 지므로 사용자 지정 양식 필드가 있습니다.

0

이 질문은 질문했을 때 사용할 수 없었어야하지만 django 1.4는 django.contrib.localflavor.us.models.USPostalCodeField()이 필요하다고 생각 되겠지만 우편 번호가 아닌 2 문자 상태 약어를 저장하기 위해 설계되었습니다. 운수 나쁘게.

관련 문제