gpt4 book ai didi

python - 在 django 管理中显示带有货币的 DecimalField

转载 作者:行者123 更新时间:2023-11-28 21:58:09 24 4
gpt4 key购买 nike

我有多个模型,其中多个 DecimalField 代表金钱,例如 100.34 欧元。

我的目标是在管理 ListView 中显示货币,如图所示。

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 方法。

最佳答案

为了在管理列表中显示,您可以在您的 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

关于python - 在 django 管理中显示带有货币的 DecimalField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com