From 052e1f17cab125245a94b805418c9333b28d3902 Mon Sep 17 00:00:00 2001 From: Joshua Phillips Date: Fri, 29 Apr 2016 11:44:56 +0100 Subject: [PATCH] [1.8.x] Fixed #26557 -- Converted empty strings to None when saving GenericIPAddressField. Backport of 4681d65048ca2553895e10c2c492997b0a78ffba from master --- django/db/backends/base/operations.py | 2 +- docs/releases/1.8.13.txt | 3 +++ tests/model_fields/tests.py | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/django/db/backends/base/operations.py b/django/db/backends/base/operations.py index 0c9365ad19..8a8209f7a6 100644 --- a/django/db/backends/base/operations.py +++ b/django/db/backends/base/operations.py @@ -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): """ diff --git a/docs/releases/1.8.13.txt b/docs/releases/1.8.13.txt index f725c37f99..0f97c99fdf 100644 --- a/docs/releases/1.8.13.txt +++ b/docs/releases/1.8.13.txt @@ -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`). diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py index 2858086324..3c1660ff19 100644 --- a/tests/model_fields/tests.py +++ b/tests/model_fields/tests.py @@ -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()