#23935: DecimalField in admin can show up as Scientific Notation ------------------------------------+-------------------------------------- Reporter: xblitz | Owner: nobody Type: Bug | Status: new Component: contrib.admin | Version: 1.7 Severity: Normal | Resolution: Keywords: DecimalField admin | Triage Stage: Unreviewed Has patch: 1 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 1 | UI/UX: 0 ------------------------------------+-------------------------------------- Description changed by xblitz:
Old 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: > }}} New 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: }}} link to my branch: https://github.com/xblitz/django/tree/ticket_23935 -- -- Ticket URL: <https://code.djangoproject.com/ticket/23935#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 django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/064.c8c2172e456ea4f8d4c0b18cc9236130%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.