[1.8.x] Fixed #26557 -- Converted empty strings to None when saving GenericIPAddressField.

Backport of 4681d65048 from master
This commit is contained in:
Joshua Phillips 2016-04-29 11:44:56 +01:00 committed by Tim Graham
parent 7934695a0f
commit 052e1f17ca
3 changed files with 12 additions and 1 deletions

View File

@ -481,7 +481,7 @@ class BaseDatabaseOperations(object):
Transforms a string representation of an IP address into the expected
type for the backend driver.
"""
return value
return value or None
def year_lookup_bounds_for_date_field(self, value):
"""

View File

@ -11,3 +11,6 @@ Bugfixes
* Fixed ``TimeField`` microseconds round-tripping on MySQL and SQLite
(:ticket:`26498`).
* Restored conversion of an empty string to null when saving values of
``GenericIPAddressField`` on SQLite and MySQL (:ticket:`26557`).

View File

@ -722,6 +722,14 @@ class GenericIPAddressFieldTests(test.TestCase):
o = GenericIPAddress.objects.get()
self.assertIsNone(o.ip)
def test_blank_string_saved_as_null(self):
o = GenericIPAddress.objects.create(ip='')
o.refresh_from_db()
self.assertIsNone(o.ip)
GenericIPAddress.objects.update(ip='')
o.refresh_from_db()
self.assertIsNone(o.ip)
def test_save_load(self):
instance = GenericIPAddress.objects.create(ip='::1')
loaded = GenericIPAddress.objects.get()