Fixed #26154 -- Deprecated CommaSeparatedIntegerField
This commit is contained in:
parent
f7a9872b91
commit
dca8b916ff
|
@ -1144,6 +1144,17 @@ class CharField(Field):
|
||||||
class CommaSeparatedIntegerField(CharField):
|
class CommaSeparatedIntegerField(CharField):
|
||||||
default_validators = [validators.validate_comma_separated_integer_list]
|
default_validators = [validators.validate_comma_separated_integer_list]
|
||||||
description = _("Comma-separated integers")
|
description = _("Comma-separated integers")
|
||||||
|
system_check_deprecated_details = {
|
||||||
|
'msg': (
|
||||||
|
'CommaSeparatedIntegerField has been deprecated. Support '
|
||||||
|
'for it (except in historical migrations) will be removed '
|
||||||
|
'in Django 2.0.'
|
||||||
|
),
|
||||||
|
'hint': (
|
||||||
|
'Use CharField(validators=[validate_comma_separated_integer_list]) instead.'
|
||||||
|
),
|
||||||
|
'id': 'fields.W901',
|
||||||
|
}
|
||||||
|
|
||||||
def formfield(self, **kwargs):
|
def formfield(self, **kwargs):
|
||||||
defaults = {
|
defaults = {
|
||||||
|
|
|
@ -130,6 +130,9 @@ details on these changes.
|
||||||
|
|
||||||
* The ``django.core.urlresolvers`` module will be removed.
|
* The ``django.core.urlresolvers`` module will be removed.
|
||||||
|
|
||||||
|
* The model ``CommaSeparatedIntegerField`` will be removed. A stub field will
|
||||||
|
remain for compatibility with historical migrations.
|
||||||
|
|
||||||
.. _deprecation-removed-in-1.10:
|
.. _deprecation-removed-in-1.10:
|
||||||
|
|
||||||
1.10
|
1.10
|
||||||
|
|
|
@ -165,6 +165,8 @@ Fields
|
||||||
* **fields.W900**: ``IPAddressField`` has been deprecated. Support for it
|
* **fields.W900**: ``IPAddressField`` has been deprecated. Support for it
|
||||||
(except in historical migrations) will be removed in Django 1.9. *This check
|
(except in historical migrations) will be removed in Django 1.9. *This check
|
||||||
appeared in Django 1.7 and 1.8*.
|
appeared in Django 1.7 and 1.8*.
|
||||||
|
* **fields.W901**: ``CommaSeparatedIntegerField`` has been deprecated. Support
|
||||||
|
for it (except in historical migrations) will be removed in Django 2.0.
|
||||||
|
|
||||||
File Fields
|
File Fields
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
|
|
@ -471,12 +471,17 @@ The default form widget for this field is a :class:`~django.forms.TextInput`.
|
||||||
of. Refer to the :ref:`MySQL database notes <mysql-collation>` for
|
of. Refer to the :ref:`MySQL database notes <mysql-collation>` for
|
||||||
details.
|
details.
|
||||||
|
|
||||||
|
|
||||||
``CommaSeparatedIntegerField``
|
``CommaSeparatedIntegerField``
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
.. class:: CommaSeparatedIntegerField(max_length=None, **options)
|
.. class:: CommaSeparatedIntegerField(max_length=None, **options)
|
||||||
|
|
||||||
|
.. deprecated:: 1.9
|
||||||
|
|
||||||
|
This field is deprecated in favor of :class:`~django.db.models.CharField`
|
||||||
|
with ``validators=[``\ :func:`validate_comma_separated_integer_list
|
||||||
|
<django.core.validators.validate_comma_separated_integer_list>`\ ``]``.
|
||||||
|
|
||||||
A field of integers separated by commas. As in :class:`CharField`, the
|
A field of integers separated by commas. As in :class:`CharField`, the
|
||||||
:attr:`~CharField.max_length` argument is required and the note about database
|
:attr:`~CharField.max_length` argument is required and the note about database
|
||||||
portability mentioned there should be heeded.
|
portability mentioned there should be heeded.
|
||||||
|
|
|
@ -561,6 +561,29 @@ This prevents confusion about an assignment resulting in an implicit save.
|
||||||
:class:`~django.contrib.gis.geos.MultiPolygon` is deprecated in favor of the
|
:class:`~django.contrib.gis.geos.MultiPolygon` is deprecated in favor of the
|
||||||
:attr:`~django.contrib.gis.geos.GEOSGeometry.unary_union` property.
|
:attr:`~django.contrib.gis.geos.GEOSGeometry.unary_union` property.
|
||||||
|
|
||||||
|
``CommaSeparatedIntegerField`` model field
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
``CommaSeparatedIntegerField`` is deprecated in favor of
|
||||||
|
:class:`~django.db.models.CharField` with the
|
||||||
|
:func:`~django.core.validators.validate_comma_separated_integer_list`
|
||||||
|
validator::
|
||||||
|
|
||||||
|
from django.core.validators import validate_comma_separated_integer_list
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
class MyModel(models.Model):
|
||||||
|
numbers = models.CharField(..., validators=[validate_comma_separated_integer_list])
|
||||||
|
|
||||||
|
If you're using Oracle, ``CharField`` uses a different database field type
|
||||||
|
(``NVARCHAR2``) than ``CommaSeparatedIntegerField`` (``VARCHAR2``). Depending
|
||||||
|
on your database settings, this might imply a different encoding, and thus a
|
||||||
|
different length (in bytes) for the same contents. If your stored values are
|
||||||
|
longer than the 4000 byte limit of ``NVARCHAR2``, you should use ``TextField``
|
||||||
|
(``NCLOB``) instead. In this case, if you have any queries that group by the
|
||||||
|
field (e.g. annotating the model with an aggregation or using ``distinct()``)
|
||||||
|
you'll need to change them (to defer the field).
|
||||||
|
|
||||||
Miscellaneous
|
Miscellaneous
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
@ -21,3 +21,20 @@ class DeprecatedFieldsTests(SimpleTestCase):
|
||||||
id='fields.E900',
|
id='fields.E900',
|
||||||
)],
|
)],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_CommaSeparatedIntegerField_deprecated(self):
|
||||||
|
class CommaSeparatedIntegerModel(models.Model):
|
||||||
|
csi = models.CommaSeparatedIntegerField(max_length=64)
|
||||||
|
|
||||||
|
model = CommaSeparatedIntegerModel()
|
||||||
|
self.assertEqual(
|
||||||
|
model.check(),
|
||||||
|
[checks.Warning(
|
||||||
|
'CommaSeparatedIntegerField has been deprecated. Support '
|
||||||
|
'for it (except in historical migrations) will be removed '
|
||||||
|
'in Django 2.0.',
|
||||||
|
hint='Use CharField(validators=[validate_comma_separated_integer_list]) instead.',
|
||||||
|
obj=CommaSeparatedIntegerModel._meta.get_field('csi'),
|
||||||
|
id='fields.W901',
|
||||||
|
)],
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue