我接受了ghghdbrown的建议,并修改了USPhoneNumberField以执行我需要的操作。我最初不使用它的原因是它在数据库中将电话号码存储为XXX- XXX-XXXX,而我将其存储为XXXXXXXXXX。因此,我推崇清洁方法:
class PhoneNumberField(USPhoneNumberField):
def clean(self, value):
super(USPhoneNumberField, self).clean(value)
if value in EMPTY_VALUES:
return u''
value = re.sub('(\(|\)|\s+)', '', smart_unicode(value))
m = phone_digits_re.search(value)
if m:
return u'%s%s%s' % (m.group(1), m.group(2), m.group(3))
raise ValidationError(self.error_messages['invalid'])