-
-
Notifications
You must be signed in to change notification settings - Fork 7k
Closed
Labels
Milestone
Description
(Not a great title — I hope the description will clarify.)
Steps to reproduce
First: pip install django-phonenumber-field
With the following model and serializer:
from django.db.models import Model
from phonenumber_field.modelfields import PhoneNumberField
from rest_framework.serializers import ModelSerializer
class PhoneModel(Model):
number = PhoneNumberField()
class PhoneSerializer(ModelSerializer):
class Meta:
model = PhoneModel
fields = ['number']
Expected behavior
This test used to pass (until version 3.3.3):
def test_phone_serializer():
phone = models.PhoneModel(number='+33610293847')
data = models.PhoneSerializer(phone).data
assert data['number'] == '+33610293847'
Actual behavior
The test fails (since version 3.4) with:
def test_phone_serializer():
phone = models.PhoneModel(number='+33610293847')
data = models.PhoneSerializer(phone).data
> assert data['number'] == '+33610293847'
E assert None == '+33610293847'
Analysis
I bisected this regression to 9c996d7.
As far as I can tell, DRF used to get the string representation of the field and no longer does.
(Pdb) phone.number
PhoneNumber(country_code=33, national_number=610293847, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=1, preferred_domestic_carrier_code='')
(Pdb) str(phone.number)
'+33610293847'