Django模板:如何将Decimal字段值格式化为两种美元货币格式
Django模板中格式化DecimalField字段的两种展示方式
假设你的模型实例在模板中以{{ object }}指代,对应字段为order_amount,以下是两种格式的实现方法:
1. 无小数点格式($12,346)
需要先加载Django的humanize模板标签库,结合floatformat和intcomma过滤器实现:
{% load humanize %} ${{ object.order_amount|floatformat:"0"|intcomma }}
floatformat:"0"会将数值四舍五入为整数(12345.67会转为12346)intcomma负责添加千位分隔符,最后手动拼接美元符号$
如果要处理字段为null的情况,可添加默认值兜底:
{% load humanize %} ${{ object.order_amount|default:0|floatformat:"0"|intcomma }}
2. 两位小数格式($12,345.67)
同样借助humanize库的intcomma过滤器,搭配floatformat固定小数位数:
{% load humanize %} ${{ object.order_amount|floatformat:"2"|intcomma }}
floatformat:"2"强制保留两位小数,intcomma添加千位分隔符
如果项目开启了本地化(settings.py中USE_L10N = True),也可以用localize过滤器自动格式化:
{% load l10n %} ${{ object.order_amount|localize }}
该方式会自动处理千位分隔符和小数位数,但需确保本地化配置适配美元格式。
处理null值时同样可加默认值:
{% load humanize %} ${{ object.order_amount|default:0|floatformat:"2"|intcomma }}
内容的提问来源于stack exchange,提问作者J.W
相关产品推荐
相关产品推荐

