It looks like your users are using the Django admin.
First, create a form for your model with a custom clean_<fieldname>
method that parses the number into E.164 format before storing it.
Something like this should do it (I'm not including the whole class or the imports; this is just a sample clean_
method):
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,
)
Then create a model admin class for your model and set its form
to the form you just created.
Aside: Consider using phone_number
instead of phoneNumber
. That's much more idiomatic. See PEP 8.