Validate that IntegerField is a valid Signed value

90 views
Skip to first unread message

Cal Leeming [Simplicity Media Ltd]

unread,
Apr 30, 2011, 12:45:20 PM4/30/11
to django-d...@googlegroups.com
http://code.djangoproject.com/ticket/15923#comment:13

Currently, Django doesn't validate if a value on an IntegerField is indeed a valid signed value.

Could someone please confirm (in others such as CharField) if value validation is left for the database to decide (for example, string length, encoding type etc), or is this validated within Django?

If it's validated within Django, then surely we should also be validating IntegerField as well? If it's not, then I apologise.

Cal

Mathieu AGOPIAN

unread,
Apr 30, 2011, 1:32:40 PM4/30/11
to django-d...@googlegroups.com
Hello,

I'm afraid there isn't such a thing as "a valid signed value", if we're still talking about "size wise".

For django (python), the integer you gave in the ticket is perfectly valid. Here's a way for you to check that :
>>> s = '351760125423456632454565345363453423453465345453'
>>> int(s)
351760125423456632454565345363453423453465345453L

And indeed, an IntegerField validates that the content of the field can be converted to an int this way (check django/forms/fields.py line 230).

So definitely, as Alex pointed, this is an issue on MySQL's side, not Django's.
I believe this can't (shan't?) be fixed at Django's level, as there's no "size" limitation for the IntegerField, as you would have on a CharField with the max_length attribute.

And no, limiting the length of the string won't work, as "2147483647" isn't the same length as "-2147483647", but is the same length as "9999999999" (if we're taking the example of 2^32-1 as the max SIGNED INT value).

my two cents ;)
Reply all
Reply to author
Forward
Message has been deleted
0 new messages