Стоит ли хранить телефонные номера в Django как необработанные цифры или использовать django.contrib.localflavor?

Название, возможно, сбивает с толку, но, пожалуйста, позвольте мне объяснить:

В настоящее время, когда я храню номер телефона с необработанными цифрами, как 5554441234, Затем в моем шаблоне я собирался "отформатировать" число в нечто вроде 555-444-1234,

Я понял в Джанго localflavor, есть поле номера телефона США, которое проверяет, находится ли строка в XXX-XXX-XXXX формат.

Поэтому мой вопрос заключается в том, должен ли я вводить номер телефона в виде необработанных цифр, а затем форматировать его в шаблоне или мне следует вводить номер телефона в форматированном виде с использованием localflavor?

Если я выберу последнее, будет ли XXX-XXX-XXXX ограничение формата применяется даже к database API уровень или на странице администратора Django?

3 ответа

Решение

Храните их в том виде, в котором они были введены, при необходимости удалите только пробел вокруг окружающего пространства То, как пользователь форматирует свой номер, хранит семантическую информацию, которую вы не хотите потерять, нормализуя ее. В сша формат XXX-XXX-XXXX очень распространено, но другие языки используют совершенно разные форматы. Например, где я живу, некоторые распространенные форматы: XX-XXX XXX XX, XXX/XXX XX XX, +46(0)70-XXX XX XX и так далее до тошноты.

Число, отображаемое для пользователя, должно быть в том же формате, в котором оно было введено, в противном случае он или она будет думать о нем как о спаренном или даже может не распознать число, если оно отформатировано в другом стиле, чем тот, к которому привык пользователь. Смотрите также это обсуждение: http://discuss.fogcreek.com/dotnetquestions/default.asp?cmd=show&ixPost=6079&ixReplies=6

Если вы используете фреймворк форм (например, в админке Django), проверка ввода будет производиться на уровне приложения. Таким образом, чтобы ввести номер телефона в форму, вы должны отформатировать его в XXX-XXX-XXXX,

На уровне базы данных это просто CharFieldТаким образом, база данных не делает никаких проверок формата.

Попробуйте Джанго-фонено. поле Он доступен на сайте Python. Вам нужно установить с помощью pip install django-phonenumber-field

https://pypi.python.org/pypi/django-phonenumber-field/0.2a3

Другие вопросы по тегам