Validate that IntegerField is a valid Signed value

Skip to first unread message

Cal Leeming [Simplicity Media Ltd]

Apr 30, 2011, 12:45:20 PM4/30/11

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.



Apr 30, 2011, 1:32:40 PM4/30/11

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)

And indeed, an IntegerField validates that the content of the field can be converted to an int this way (check django/forms/ 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
Message has been deleted
0 new messages