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