Fixed #24078 -- Removed empty strings from GenericIPAddressField
This commit is contained in:
parent
9b057b51ce
commit
5a4ac4ead9
|
@ -1910,7 +1910,7 @@ class IPAddressField(Field):
|
||||||
|
|
||||||
|
|
||||||
class GenericIPAddressField(Field):
|
class GenericIPAddressField(Field):
|
||||||
empty_strings_allowed = True
|
empty_strings_allowed = False
|
||||||
description = _("IP address")
|
description = _("IP address")
|
||||||
default_error_messages = {}
|
default_error_messages = {}
|
||||||
|
|
||||||
|
|
|
@ -1009,6 +1009,11 @@ Miscellaneous
|
||||||
different in some cases. There is no change to default values which are the
|
different in some cases. There is no change to default values which are the
|
||||||
result of a callable.
|
result of a callable.
|
||||||
|
|
||||||
|
* ``GenericIPAddressField.empty_strings_allowed`` is now ``False``. Database
|
||||||
|
backends that interpet empty strings as null (only Oracle among the backends
|
||||||
|
that Django includes) will no longer convert null values back to an empty
|
||||||
|
string. This is consistent with other backends.
|
||||||
|
|
||||||
.. _deprecated-features-1.8:
|
.. _deprecated-features-1.8:
|
||||||
|
|
||||||
Features deprecated in 1.8
|
Features deprecated in 1.8
|
||||||
|
|
|
@ -176,6 +176,10 @@ class VerboseNameField(models.Model):
|
||||||
field22 = models.URLField("verbose field22")
|
field22 = models.URLField("verbose field22")
|
||||||
|
|
||||||
|
|
||||||
|
class GenericIPAddress(models.Model):
|
||||||
|
ip = models.GenericIPAddressField(null=True, protocol='ipv4')
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# These models aren't used in any test, just here to ensure they validate
|
# These models aren't used in any test, just here to ensure they validate
|
||||||
# successfully.
|
# successfully.
|
||||||
|
|
|
@ -22,11 +22,11 @@ from django.utils import six
|
||||||
from django.utils.functional import lazy
|
from django.utils.functional import lazy
|
||||||
|
|
||||||
from .models import (
|
from .models import (
|
||||||
Foo, Bar, Whiz, BigD, BigS, BigIntegerModel, Post, NullBooleanModel,
|
Bar, BigD, BigIntegerModel, BigS, BooleanModel, DataModel, DateTimeModel,
|
||||||
BooleanModel, PrimaryKeyCharModel, DataModel, Document, RenamedField,
|
Document, FksToBooleans, FkToChar, FloatModel, Foo, GenericIPAddress,
|
||||||
DateTimeModel, VerboseNameField, FksToBooleans, FkToChar, FloatModel,
|
IntegerModel, NullBooleanModel, PositiveIntegerModel, PositiveSmallIntegerModel,
|
||||||
SmallIntegerModel, IntegerModel, PositiveSmallIntegerModel, PositiveIntegerModel,
|
Post, PrimaryKeyCharModel, RenamedField, SmallIntegerModel, VerboseNameField,
|
||||||
WhizIter, WhizIterEmpty)
|
Whiz, WhizIter, WhizIterEmpty)
|
||||||
|
|
||||||
|
|
||||||
class BasicFieldTests(test.TestCase):
|
class BasicFieldTests(test.TestCase):
|
||||||
|
@ -688,6 +688,14 @@ class GenericIPAddressFieldTests(test.TestCase):
|
||||||
form_field = model_field.formfield()
|
form_field = model_field.formfield()
|
||||||
self.assertRaises(ValidationError, form_field.clean, '127.0.0.1')
|
self.assertRaises(ValidationError, form_field.clean, '127.0.0.1')
|
||||||
|
|
||||||
|
def test_null_value(self):
|
||||||
|
"""
|
||||||
|
Null values should be resolved to None in Python (#24078).
|
||||||
|
"""
|
||||||
|
GenericIPAddress.objects.create()
|
||||||
|
o = GenericIPAddress.objects.get()
|
||||||
|
self.assertIsNone(o.ip)
|
||||||
|
|
||||||
|
|
||||||
class PromiseTest(test.TestCase):
|
class PromiseTest(test.TestCase):
|
||||||
def test_AutoField(self):
|
def test_AutoField(self):
|
||||||
|
|
Loading…
Reference in New Issue