在django的PhoneNumber字段中,如何允许用户输入电话号码而不是前面的+1?
这将是他们填写的表格。
class Phone(models.Model):
name = models.CharField(max_length=30)
phoneNumber = PhoneNumberField()
答案 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。