The big version bump is due to the change in how invalid phone numbers are handled.
Starting with 2.4.0
we added very aggressive validation, which raised ValueError
for invalid numbers. This caused problems in unexpected places (like when filtering a
queryset). Starting with 4.0.0
we acknowledge that we can not completely prevent
invalid numbers from entering the system. Changes directly to the database, validation
changes in the upstream phonenumbers library, changes in the django settings may all
lead to invalid numbers in the database. Now it is possible to save an invalid number
to the database and __str__
and __repr__
clearly indicate invalid numbers.
- Don’t raise
ValueError
on invalid phone numbers -__str__
and__repr__
updated to report invalid phone numbers correctly if detected. - Various translation updates
- Allow overriding the default invalid phone number message.
- Update French and Hebrew translations.
- Add a valid phone number example to invalid phone number error messages.
Backwards incompatible changes
- Drop support for Django 2.0.
- Drop support for Python 2.7 and 3.4.
- A
PhoneNumberField
can now be deferred withQuerySet.defer()
. - Saving or filtering by an invalid phone number will now raise a
ValueError
. - The model field attribute
PhoneNumberField.region
now usesPHONENUMBER_DEFAULT_REGION
if not specified.
- Fixed a regression to re-allow the model field to override the default form field.
Added the
region
keyword argument toPhoneNumberField
.Fix representation of invalid phone numbers in the database, previously stored as
+NoneNone
. Now, invalid phone numbers are represented as:Existing database records can be upgraded with a data migration.
Added support for Django 2.2.
Tests are now included in the sdist package.
modelfields.PhoneNumberField
now inherits frommodels.CharField
instead ofmodels.Field
.
- Added support for
null=True
- Removed hardcoded dependency to phonenumbers library. Now developers have to manually install either phonenumbers or phonenumberslite.
- Added Romanian locale
- Added Bangla locale
- Update French locale
- Update Italian locale
- Statically depend on phonenumbers Previously the phonenumberslight dependency was used dynamically in setup.py if it already was installed, causing problems with building wheels and with pipenv.
- Added Ukrainian locale
- Added Simplified Chinese locale
- Add Django 2.0 support
- Drop Support for Django<1.11
- Translations: Swedish
- Add rest_framework Serializer
- Hashable phonenumber object
- Various bugfixes and improvements
- Django 1.10 support
- Bugfixes and cleanup
- Translations: Brazilian Portuguese, Spanish, Norwegian, Dutch, Azerbaijani, Turkish and French
- Django 1.9 support
- README updated and links fixed
- support for HTML5.0 tel input type added
- locale files are now included
- new translations: Danish, Esperanto, Polish, all translations reformatted, Russian translation expanded
- PhoneNumberField.get_prep_value changed to enable setting
null=True
- new widget added:
PhoneNumberInternationalFallbackWidget
- new backward compatible requirement phonenumberslite instead of phonenumbers
- lots of tests
- dropped support for
PHONENUMER_DEFAULT_REGION
setting with typo