Hen*_*nri 1 django admin decimal models
我有一个字段定义为的模型
p = models.DecimalField(max_digits=12, decimal_places=6)
Run Code Online (Sandbox Code Playgroud)
但decimal_places=6 仅用于内部精度。我只想在管理字段中显示 2 个小数位。所以我想也许我可以用属性做点什么。但是属性不会在管理界面中显示为字段。例如:数据库记录:100.256754 admin 编辑字段显示:100.26
有没有办法做到这一点?
我使用 wlashell——你的编辑表单应该显示原始值;否则,每次修改对象时,您都会间接修改该值,即使实际字段根本没有更改。可能不是你想要的。
如果您只想更改字段在更改列表中的显示方式(也许是为了可读性),您可以在模型类上定义一个方法,如下所示:
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'
Run Code Online (Sandbox Code Playgroud)
然后,在您的 ModelAdmin 子类中,list_display您将包括display_p而不是p:
from django.contrib import admin
from myapp.models import MyModel
class MyModelAdmin(admin.ModelAdmin):
list_display = ['display_p', ...]
...
admin.site.register(MyModel, MyModelAdmin)
Run Code Online (Sandbox Code Playgroud)
哈。