#30328 closed Bug (fixed)
Integer field range validators crash when limit_value is callable.
Reported by: | Harro | Owned by: | Scott Fitsimones |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 2.2 |
Severity: | Release blocker | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | yes | Patch needs improvement: | yes |
Easy pickings: | yes | UI/UX: | no |
Description (last modified by )
in #29860 for django 2.2 the option was added to pass in a callable.
I just upgraded to django 2.2 and found our custom max value validator for current year + 1 (which gave us a migration on the year change) and thought to replace it with the new mechanic.
The result was the following error:
File "<venv>/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 1799, in <genexpr> validator.limit_value <= max_value for validator in validators_)):
So the field wants to check that the validator's max (and min) value lie within range of the Integer field which is not possible with the callable.
The fix should be simple: Check if it's a callable and call it for the value.
Change History (9)
comment:1 by , 6 years ago
Description: | modified (diff) |
---|
comment:2 by , 6 years ago
Description: | modified (diff) |
---|
comment:3 by , 6 years ago
comment:4 by , 6 years ago
Severity: | Normal → Release blocker |
---|---|
Summary: | Callable passed to Min/Max validators breaks in the fields → Integer field range validators crash when limit_value is callable. |
Triage Stage: | Unreviewed → Accepted |
Reproduced at 1ffddfc233e2d5139cc6ec31a4ec6ef70b10f87f.
Regression in 24cae0bedc51093b363c323af555946a8edea1a1.
Thanks for the report!
comment:5 by , 6 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:7 by , 6 years ago
Needs tests: | set |
---|---|
Patch needs improvement: | set |
Should add that it only fails if the database backend has limits (sqlite does not)