Opened 10 years ago

Last modified 10 years ago

#23935 closed Bug

DecimalField in admin can show up as Scientific Notation — at Initial Version

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

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:

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top