I m with wlashell -- your edit form should display the raw value; otherwise, you d be indirectly modifying the value each time the object got modified, even if the actual field wasn t changed at all. Probably not what you want.
If you d simply like to change the way the field displays in the change list (for readability, perhaps), you can define a method on your model class like so:
from django.db import models
from django.template.defaultfilters import floatformat
class MyModel(models.Model):
p = models.DecimalField(max_digits=12, decimal_places=6, verbose_name= My Field Name )
...
def display_p(self):
"""Format `p` to 2 decimal places, for readability."""
return floatformat(self.p, 2)
display_p.short_description = My Field Name
display_p.admin_order_field = p
Then, in your ModelAdmin subclass list_display
you d include display_p
instead of p
:
from django.contrib import admin
from myapp.models import MyModel
class MyModelAdmin(admin.ModelAdmin):
list_display = [ display_p , ...]
...
admin.site.register(MyModel, MyModelAdmin)
HTH.