Fixed #26154 -- Deprecated CommaSeparatedIntegerField
This commit is contained in:
parent
f7a9872b91
commit
dca8b916ff
|
@ -1144,6 +1144,17 @@ class CharField(Field):
|
|||
class CommaSeparatedIntegerField(CharField):
|
||||
default_validators = [validators.validate_comma_separated_integer_list]
|
||||
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):
|
||||
defaults = {
|
||||
|
|
|
@ -130,6 +130,9 @@ details on these changes.
|
|||
|
||||
* 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:
|
||||
|
||||
1.10
|
||||
|
|
|
@ -165,6 +165,8 @@ Fields
|
|||
* **fields.W900**: ``IPAddressField`` has been deprecated. Support for it
|
||||
(except in historical migrations) will be removed in Django 1.9. *This check
|
||||
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
|
||||
~~~~~~~~~~~
|
||||
|
|
|
@ -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
|
||||
details.
|
||||
|
||||
|
||||
``CommaSeparatedIntegerField``
|
||||
------------------------------
|
||||
|
||||
.. 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
|
||||
:attr:`~CharField.max_length` argument is required and the note about database
|
||||
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
|
||||
: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
|
||||
-------------
|
||||
|
||||
|
|
|
@ -21,3 +21,20 @@ class DeprecatedFieldsTests(SimpleTestCase):
|
|||
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