#35342: models.fields.IntegerField.to_python() is converting float type numbers, making .clean_fields( ) less reliable -------------------------------------+------------------------------------- Reporter: | Owner: nobody thiper01@… | Type: Bug | Status: new Component: Database | Version: 5.0 layer (models, ORM) | Severity: Normal | Keywords: Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 1 UI/UX: 0 | -------------------------------------+------------------------------------- During the full_clean( ) routine, when an IntegerField is being cleaned and the code calls the field's to_python( ) method, if the value of the field is a float, it will just be converted to an integer using {{{int(value)}}}. As it is characteristic of python's native int( ) function, it converts any float to int regardless of decimal places and approximations necessary, allowing for examples like this to happen:
{{{ exModel = ModelWithIntegerField(value=1.2) >> exModel.value #1.2 exModel.clean_fields() #no validation error raised >> exModel.value #1 }}} I don't know if this behaviour is because of ticket #24229, but I believe there are better ways than just allowing any number through IntegerField verification as long as it's a number, regardless of how it affects the output. My suggestions to improve this are: 1# Check first if it's a float type then verify if the numbers after the decimal point are 0 {{{if value%1 == 0}}}, if they are, no problem converting, if not raise a TypeError as it would distort the original value without warning. -- Ticket URL: <https://code.djangoproject.com/ticket/35342> 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 django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/0107018e8c417b84-88bf72b7-8ab3-4e78-ac29-002e77a533c3-000000%40eu-central-1.amazonses.com.