При хранении телефонных номеров в Django, я должен хранить их как сырые цифры или использовать django.contrib.localflavor? - PullRequest
6 голосов
/ 30 марта 2012

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

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

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

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

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

Ответы [ 3 ]

9 голосов
/ 30 марта 2012

Храните их в том виде, в котором они были введены, при необходимости удаляйте только окружающие пробелы.То, как пользователь форматирует свой номер, хранит семантическую информацию, которую вы не хотите потерять, нормализуя ее.В США формат 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

2 голосов
/ 30 марта 2012

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

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

0 голосов
/ 17 мая 2014

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...