尝试在Django中获得存储手机号码的最佳方式。 我正在使用Charfield并检查它是否是一个数字......
答案 0 :(得分:4)
我总是使用简单的CharField,因为不同地区和国家/地区的电话号码差别很大。根据手机上的数字键盘,有些人甚至可能使用字符而不是数字。
也许为国家/地区前缀添加一个Choicefield是一个好主意,但这就是我要去的地方。
我绝不会在电话号码字段中查找任何“无效”数据,如破折号,空格等,因为您的用户可能不喜欢收到错误消息,因此根本不提交电话号码。
毕竟,办公室里的人都会拨打电话号码。他们可以 - 而且应该 - 亲自核实这个数字。
答案 1 :(得分:3)
我将电话号码存储在CharField中,并使用phonenumbers进行验证。在表单中,我允许用户以他想要的任何方式输入数字,然后使用phonenumbers
lib解析,格式化和验证它。
答案 2 :(得分:1)
您还可以使用“本地风味”插件,该插件为许多不同的国家/地区定义自定义字段。如果您希望只有一个国家/地区的电话号码,这将非常有用。 请注意,Django 1.4和1.5之间的本地风味的实现发生了很大变化,因此请务必阅读正确的文档。它在1.5之前内置,现在它是一个外部包。
For U.S. phone numbers (django 1.4)
For U.S. phone numbers (django 1.5)