我遇到了Django格式化的奇怪行为。最好通过一个例子来描述:
型号:
class MyModel(models.Model):
value= models.DecimalField(max_digits=8, decimal_places=2)
my_template.html:
{% load humanize %}
{{calculated_sum|floatformat|intcomma}} # improperly formatted (commas instead of spaces)
{{some_qs.0.value|floatformat|intcomma}} #properly formatted (spaces instead of
#commas as thousand separator
使用模板生成电子邮件的HTML内容的视图:
some_qs = MyModel.objects.all()
calculated_sum= legal_entity_own_instance.get_latest_orders_sum()
context = Context({'calculated_sum':calculated_sum, 'some_qs':some_qs})
html_content = render_to_string('my_template.html', context)
出于某种原因,some_qs.0.value
按预期格式化(使用空格而不是逗号作为千位分隔符)。也就是说,12345渲染为12 345.但奇怪的是,calculated_sum
用逗号格式化(12345格式为12,345)。
get_latest_orders_sum的定义:
def get_latest_orders_sum(self):
qs = MyModel.objects.filter(...).aggregate(Sum('value'))
order_sum = qs['value__sum']
return order_sum
有谁知道错误格式化的原因是什么?
答案 0 :(得分:0)
您是否尝试将return order_sum
更改为return int(order_sum)
或执行逻辑以在get_latest_orders_sum func中添加空格。即
return str(order_sum).replace("," " ")