2012-03-30 5 views
5

제목은 혼란 있었지만 설명해 주시기 바랍니다있을 수 있습니다Django에 전화 번호를 저장할 때 원시 번호 또는 django.contrib.localflavor를 사용해야합니까?

현재 내가 5554441234 같은 원시 자리 전화 번호를 저장하고 때. 그런 다음 서식 파일에서 숫자를 555-444-1234과 같은 형식으로 "포맷"하려고했습니다.

장고의 localflavor에서 문자가 XXX-XXX-XXXX 형식인지 확인하는 US phone number field이 있습니다.

제 질문은 입니다. 원시 번호로 전화 번호를 입력 한 다음 서식 파일에 전화 번호를 입력해야합니까? 아니면 localflavor을 사용하여 서식이 지정된 전화 번호를 입력해야합니까?

내가 후자를 선택한 경우 database API 수준이나 장고 관리자 페이지에도 XXX-XXX-XXXX 형식 제한이 적용됩니까?

답변

9

입력 한대로 저장하십시오. 필요한 경우 공백을 감싸십시오. 사용자가 숫자를 형식화하는 방식은 의미를 정하기위한 의미 정보를 정규화하여 잃고 싶지 않은 정보를 저장합니다. 미국에서는 XXX-XXX-XXXX 형식이 매우 일반적이지만 다른 로캘은 전혀 다른 형식을 사용합니다. 예를 들어, 내가 사는 곳은 다음과 같습니다 : XX-XXX XXX XX, XXX/XXX XX XX, +46(0)70-XXX XX XX 등등.

사용자에게 표시되는 숫자는 입력 된 것과 동일한 형식이어야하며, 그렇지 않으면 사용자가 익숙하지 않은 스타일과 달리 형식이 munged로 인식되거나 숫자가 인식되지 않을 수 있습니다. . 이 토론을 참조하십시오 : http://discuss.fogcreek.com/dotnetquestions/default.asp?cmd=show&ixPost=6079&ixReplies=6

+0

장고 관리자를 어떻게 확인합니까? 'CharField'에 태그를 지정하여'models.py' 레벨에서'XXX-XXX-XXXX' 검증을 시행 할 수 있습니까? – hobbes3

+3

요점은 당신이 ** 시행하지 말아야한다는 것입니다. 사용자에게 자신의 전화 번호를 형식화하는 방법을 알려주는 것은 사이트의 비즈니스가 아닙니다. –

2

양식 프레임 워크 (예 : 장고 관리자)를 사용하는 경우 입력의 유효성 검사는 응용 프로그램 수준에서 수행됩니다. 양식에 전화 번호를 입력하려면 XXX-XXX-XXXX으로 서식을 지정해야합니다.

데이터베이스 수준에서 데이터베이스는 단지 CharField이므로 형식에 대한 검사는 수행되지 않습니다.

+1

를 설치 PIP 를 사용하여 설치해야합니다, 당신은 모델에 대한 pre_save' 신호 '로 기능을 첨부 할 수 있습니다. 그 함수에서'localflavor'를 사용하여 입력을 검증 할 수 있습니다. – gakhov