这个问题来自DecimalField。
具体地说,当DecimalField在模板中呈现时,它会根据指定的准确度显示点后的每个数字,即使它的全部为零,例如如果你只是存储
1.248
呈现为(假设8位精度)
1.24800000
比前者更不方便。
一个简单的解决方案是定义一个方法来渲染食欲并相应地使用它,但它不是一个干燥的解决方案。
我对这个问题的研究一直没有用,似乎应该通过修补django源来解决(因为我几乎不认为人们更喜欢冗长的表示),但我希望事先听到社区的意见。
答案 0 :(得分:1)
有一个用于渲染浮点数的内置模板过滤器: https://docs.djangoproject.com/en/1.6/ref/templates/builtins/#floatformat
如果您希望所有数字四舍五入到最接近的千分之一:
{{ your_float|floatformat:3 }}
如果小数点后的位数不同,您可以尝试编写一个自定义模板过滤器,用于删除尾随零。这些文档非常适合编写自己的模板过滤器/标签: https://docs.djangoproject.com/en/1.6/howto/custom-template-tags/
编辑: 更干的解决方案可能是在模型中定义一个函数,并在模板中使用它。它可能看起来像这样:
在models.py
其中decimal_field
是您的问题字段:
def formated_decimal_field(self):
value = str(self.decimal_field)
output = value.rstrip('0').rstrip('.') if '.' in value else value
return output
这样,您只需在模板中使用{{ object.formated_decimal_field }}
。