Why was CommaSeparatedIntegerField Deprecated?

948 views
Skip to first unread message

Donald Morrone

unread,
May 15, 2017, 12:57:59 PM5/15/17
to Django developers (Contributions to Django itself)
I see that CommaSeparatedIntegerField is being deprecated, but I don't see why. I know I'm apparently late to the discussion, but after it 16 months I don't see any actual reasoning.

I recognize that a CharField with the validator is functionally equivalent, but it takes a very handy field type and makes it completely inaccessible and invisible to new users.


Both links focus on the how rather than the why

I disagree with the decision overall, but I'm more concerned that it just kind of slipped through without anyone really thinking about it.

(To be clear, I don't begrudge Tim Graham, he was right to propose it, but then there was no discussion on it at all that I saw)

Tim Graham

unread,
May 15, 2017, 1:21:26 PM5/15/17
to Django developers (Contributions to Django itself)
The CharField(validators=[validate_comma_separated_integer_list]) version is more explicit about how the database stores the data. In my mind, having a separate field could give the impression that the database uses a special field type or validation. Also, I think
CommaSeparatedIntegerField is/was generally something to avoid -- I've never seen it used myself.

Adam Johnson

unread,
May 15, 2017, 3:20:30 PM5/15/17
to django-d...@googlegroups.com
I agree with the removal, it wasn't providing much value and was making it unclear as to what it actually aws. It could easily be mistaken by a beginner for a performant alternative to M2M models or something like django.contrib.postgres' ArrayField. Additionally it was weird that Django would offer a single model field that's just differs from another by a single validator function - why not offer CommaSeparatedStringField, OddIntegerField, etc. ?

--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscribe@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/6e661a98-df55-4be5-852e-99788df05945%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Adam

Aymeric Augustin

unread,
May 15, 2017, 4:14:43 PM5/15/17
to django-d...@googlegroups.com
Hello,

Storing a comma-separated list of integers in a text field in a SQL database is a really bad anti-pattern. That's a sufficient reason for Django to stop condoning it, which it did by providing that functionality out of the box.

It was widely accepted (at least among the core team) that CommaSeparatedIntegerField shouldn't be a core Django field because it's both weird and specialized. That's why no one found useful to write down the reasons,

There's a comment saying that CSIF doesn't belong to core Django since the magic-removal refactor, just over 11 years ago:

It already existed when Django was open sourced, making it hard to trace why it was introduced — likely to support some sort of one-to-many field?

I hope this helps,

-- 
Aymeric.



--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages