Commit dca8b916 authored by Brobin's avatar Brobin Committed by Tim Graham
Browse files

Fixed #26154 -- Deprecated CommaSeparatedIntegerField

parent f7a9872b
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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 = {
+3 −0
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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
~~~~~~~~~~~
+6 −1
Original line number Diff line number Diff line
@@ -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.
+23 −0
Original line number Diff line number Diff line
@@ -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
-------------

Loading