6

标题可能有点混乱,但请让我解释一下:

目前,当我使用原始数字存储电话号码时,例如5554441234. 然后在我的模板中,我将把数字“格式化”成类似555-444-1234.

我意识到在 Django 中localflavor,有一个美国电话号码字段可以检查字符串是否为XXX-XXX-XXXX格式。

所以我的问题是我应该将电话号码作为原始数字输入,然后在模板中对其进行格式化,还是应该使用 localflavor 以格式化的方式输入电话号码

如果我选择后者,XXX-XXX-XXXX格式限制是否适用于database API级别或 Django 管理页面?

4

3 回答 3

9

将它们按输入存储,仅在必要时去除周围的空白。用户格式化其数字的方式存储您不想通过规范化而丢失的语义信息。在美国,这种格式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

于 2012-03-30T10:34:19.557 回答
2

如果您使用表单框架(例如,在 Django 管理员中),输入的验证将在应用程序级别完成。因此,要在表单中输入电话号码,您必须将其格式化为XXX-XXX-XXXX.

在数据库级别,它只是一个CharField,因此数据库不会对格式进行任何检查。

于 2012-03-30T10:33:41.627 回答
0

试试 Django-phoneno。场地 。它可以在 Python 网站上找到。您需要使用 pip install django-phonenumber-field 安装

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

于 2014-05-17T15:15:45.117 回答