#27476: model Integer fields (and derivatives) do not raise a ValidationError
while
other types do
-------------------------------------+-------------------------------------
Reporter: Romeo Mihalcea | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 1.10
(models, ORM) |
Severity: Normal | Resolution:
Keywords: models, integer, | Triage Stage:
ValidationError | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Romeo Mihalcea:
Old description:
> I have a model with `Decimal` fields, `Boolean` fields and some `Integer`
> fields. While testing with invalid data (I mostly supplied a string to
> these fields) I noticed that the integer fields do not raise a
> `ValidationError` while all of the other fields do so. Supplying a string
> to all Integer fields raise a `ValueError` instead which looks like all
> other fields have a basic validation in place while the Integers do not.
> I know I'm supposed to perform the validations before the data reaches
> the model but this is testing and I like to make sure everything is as
> intended.
New description:
I have a model with `Decimal` fields, `Boolean` fields and some `Integer`
fields. While testing with invalid data (I mostly supplied a string to
these fields) I noticed that the integer fields do not raise a
`ValidationError` while all of the other fields do so. Supplying a string
to all Integer fields raise a `ValueError` instead which looks like all
other fields have a basic validation in place while the Integers do not. I
know I'm supposed to perform the validations before the data reaches the
model but this is testing and I like to make sure everything is as
intended.
Example:
{{{
# model
class Worker(models.Model):
...
disabled = models.BooleanField(default=False)
max_execution = models.PositiveSmallIntegerField(default=3600,
null=False)
# testcase
class TestModelWorker(unittest.TestCase):
def test_max_execution(self):
# Here we expect a Python ValueError to be raised when providing a
string
# as an argument to what is a `PositiveSmallIntegerField`
with self.assertRaises(ValueError) as e:
Worker.create(
name="Worker",
max_execution='s'
)
self.assertIn('invalid literal for int() with base 10',
str(e.exception))
def test_disabled(self):
# While here we can expect a `ValidationError` when providing a
string to a `BooleanField`
with self.assertRaises(ValidationError) as e:
Worker.create(
name="Worker",
disabled='s'
)
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/27476#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/064.286e2160d58edc0d04a002016ce71cd3%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.