【发布时间】:2013-09-16 13:46:49
【问题描述】:
我有多个模型,其中多个 DecimalField 代表金钱,例如 100.34 欧元。
我的目标是在管理列表视图中显示货币,如图所示
http://i.imgur.com/XKEQFp9.png
但是我无法找到一种方法来为每个货币领域做到这一点。
我尝试创建一个自定义 MoneyField,从 DecimalField 继承并更改 unicode 表示,但它不起作用。
我也尝试过https://github.com/jakewins/django-money,但没有运气。
我研究了django admin的源码,终于找到了问题:
在 django.admin.contrib.admin.util.py 的 display_for_field 函数中,它检查值是否是 DecimalField 的实例。如果是这种情况,它会将其显示为十进制数字。
elif isinstance(field, models.DecimalField):
return formats.number_format(value, field.decimal_places)
这是有道理的,但它阻止我在管理员中显示欧元符号/文本。
我该如何解决这个问题?
我知道我可以简单地对每个字段使用一种方法,将格式化的值显示为字符串,但我想知道是否有 DRYer 方式。
【问题讨论】:
标签: python django django-admin decimal currency-formatting