Mat*_*ppo 7 python django decimal django-admin currency-formatting
我有多个模型,其中多个 DecimalField 代表货币,例如 100.34 EUR。
我的目标是在管理列表视图中显示货币,如图所示
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)
Run Code Online (Sandbox Code Playgroud)
这是有道理的,但它阻止我在管理中显示欧元符号/文本。
我怎么解决这个问题?
我知道我可以简单地为每个字段使用一种方法,将格式化的值显示为字符串,但我想知道是否有 DRYer 方法。
为了在管理列表中显示,您可以在您的ModelAdmin类中创建一个自定义函数,该函数将被调用以格式化每个值:
class MyModelAdmin(admin.ModelAdmin):
list_display = ('formatted_amount', ...other fields...,)
def formatted_amount(self, obj):
# obj is the Model instance
# If your locale is properly set, try also:
# locale.currency(obj.amount, grouping=True)
return '%.2f EUR' % obj.amount
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7981 次 |
| 最近记录: |