Skip to content

Commit

Permalink
Add a DB converter for the model field
Browse files Browse the repository at this point in the history
  • Loading branch information
francoisfreitag committed Jul 17, 2023
1 parent a9edf58 commit 19b82b1
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
3 changes: 3 additions & 0 deletions phonenumber_field/modelfields.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,9 @@ def get_prep_value(self, value):

return super().get_prep_value(value)

def from_db_value(self, value, expression, connection):
return to_python(value)

def contribute_to_class(self, cls, name, *args, **kwargs):
super().contribute_to_class(cls, name, *args, **kwargs)
setattr(cls, self.name, self.descriptor_class(self))
Expand Down
35 changes: 35 additions & 0 deletions tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,41 @@ def test_filter_by_partial_number_of_valid_number_works(self):
1,
)

def test_values_list(self):
num0 = "+33600000000"
num1 = "+33611111111"
models.MandatoryPhoneNumber.objects.bulk_create(
[
models.MandatoryPhoneNumber(phone_number=num0),
models.MandatoryPhoneNumber(phone_number=num1),
]
)
number0, number1 = models.MandatoryPhoneNumber.objects.order_by(
"phone_number"
).values_list("phone_number", flat=True)
self.assertIsInstance(number0, PhoneNumber)
self.assertEqual(to_python(num0), number0)
self.assertIsInstance(number1, PhoneNumber)
self.assertEqual(to_python(num1), number1)

def test_values_with_null(self):
num0 = "+33600000000"
models.NullablePhoneNumber.objects.bulk_create(
[
models.NullablePhoneNumber(phone_number=num0),
models.NullablePhoneNumber(phone_number=""),
models.NullablePhoneNumber(phone_number=None),
]
)
number0, number1, number2 = models.NullablePhoneNumber.objects.order_by(
"pk"
).values_list("phone_number", flat=True)
self.assertIsInstance(number0, PhoneNumber)
self.assertEqual(to_python(num0), number0)
self.assertIsInstance(number1, str)
self.assertEqual(number1, "")
self.assertIsNone(number2)


class PhoneNumberFieldAppTest(TestCase):
def test_save_field_to_database(self):
Expand Down

0 comments on commit 19b82b1

Please sign in to comment.