如何在没有前导 +1 的情况下输入 phone 个数字
How to input phone numbers without the leading +1
在 django 的 PhoneNumber 字段中,如何允许用户输入 phone 开头没有前导 +1 的号码?
这将是他们填写的表格。
class Phone(models.Model):
name = models.CharField(max_length=30)
phoneNumber = PhoneNumberField()
看起来您的用户正在使用 Django 管理员。
首先,使用自定义 clean_<fieldname>
方法创建一个 form for your model,在存储之前将号码解析为 E.164 格式。
应该这样做(我没有包括整个 class 或导入;这只是一个示例 clean_
方法):
def clean_phoneNumber(self):
phone_number = self.cleaned_data['phoneNumber']
# Replace 'US' with whatever type of number it is
# See https://github.com/daviddrysdale/python-phonenumbers
parsed_number = phonenumbers.parse(phone_number, 'US')
return phonenumbers.format_number(
parsed_number,
phonenumbers.PhoneNumberFormat.E164,
)
然后为您的模型创建一个 model admin class 并将其 form
设置为您刚刚创建的表单。
旁白:考虑使用 phone_number
而不是 phoneNumber
。这更惯用。参见 PEP 8。
在 django 的 PhoneNumber 字段中,如何允许用户输入 phone 开头没有前导 +1 的号码?
这将是他们填写的表格。
class Phone(models.Model):
name = models.CharField(max_length=30)
phoneNumber = PhoneNumberField()
看起来您的用户正在使用 Django 管理员。
首先,使用自定义 clean_<fieldname>
方法创建一个 form for your model,在存储之前将号码解析为 E.164 格式。
应该这样做(我没有包括整个 class 或导入;这只是一个示例 clean_
方法):
def clean_phoneNumber(self):
phone_number = self.cleaned_data['phoneNumber']
# Replace 'US' with whatever type of number it is
# See https://github.com/daviddrysdale/python-phonenumbers
parsed_number = phonenumbers.parse(phone_number, 'US')
return phonenumbers.format_number(
parsed_number,
phonenumbers.PhoneNumberFormat.E164,
)
然后为您的模型创建一个 model admin class 并将其 form
设置为您刚刚创建的表单。
旁白:考虑使用 phone_number
而不是 phoneNumber
。这更惯用。参见 PEP 8。