如何在没有前导+1的情况下输入电话号码

时间:2017-06-29 16:52:49

标签: django phone-number

在django的PhoneNumber字段中,如何允许用户输入电话号码而不是前面的+1?

这将是他们填写的表格。

class Phone(models.Model):
    name = models.CharField(max_length=30)
    phoneNumber = PhoneNumberField()

1 个答案:

答案 0 :(得分:0)

看起来您的用户正在使用Django管理员。

首先,使用自定义clean_<fieldname>方法创建form for your model,在存储数据之前将其解析为E.164格式。

这样的事情应该这样做(我不包括整个班级或导入;这只是一个示例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