Opened 10 years ago
Last modified 10 years ago
#23935 closed Bug
DecimalField in admin can show up as Scientific Notation — at Version 2
Reported by: | Eric | Owned by: | nobody |
---|---|---|---|
Component: | Utilities | Version: | 1.8alpha1 |
Severity: | Release blocker | Keywords: | DecimalField admin |
Cc: | cmawebsite@… | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
In the django admin, if a DecimalField's value is lower than 0.000001 displays as Scientific Notation (ex: 1E-7) since python Decimals converts automatically to a scientific notation (exponential) ex: Decimal("0.0000001") = Decimal('1E-7')
this is mostly visible when using Postgresql since DecimalFields with a value of 0 are saved with the decimal precision higher than 6 , ex: 0.00000000 then in the admin instead of seeing 0 or 0.00000000 it is displayed as 0E-8
the bug can be fixed by converting the Decimal to a fixed point value in admin/utils.py:
@@ -375,7 +375,7 @@ def display_for_field(value, field): elif isinstance(field, (models.DateField, models.TimeField)): return formats.localize(value) elif isinstance(field, models.DecimalField): - return formats.number_format(value, field.decimal_places) + return formats.number_format(format(value, "f"), field.decimal_places) elif isinstance(field, models.FloatField): return formats.number_format(value) else:
link to my branch: https://github.com/xblitz/django/tree/ticket_23935
Change History (2)
comment:1 by , 10 years ago
Description: | modified (diff) |
---|
comment:2 by , 10 years ago
Description: | modified (diff) |
---|