我有一个Django表单,其字段有时是空白的,有时会有一个默认的初始值,有时会填充来自关联模型的值。在后两种情况下,我有像这样出现在模板中的DecimalField:
<input type="text" name="foo" value="10.00"/>
问题是我希望能够使用模板过滤器或某些等效项来格式化该值属性。例如,对于上面的输入,我想使用floatformat过滤器,这样它就不会显示无关的尾随零,而只会打印:
<input type="text" name="foo" value="10"/>
之前有人遇到过这样的事情吗?
答案 0 :(得分:1)
我假设您使用的是{{form}}或{{form.field_name}},因此无法执行此操作:
<input type="text" name="foo" value="{{value | floatformat}}"/>
如果是这样,你可以遍历构造函数方法中的字段并根据需要对它们进行舍入,即:
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
for key in self.fields:
try:
self.fields[key].initial = round(self.fields[key].initial, 2)
except:
pass
显然,您需要根据需要修改实际的舍入行 - 如果需要,可以模仿floatformat行为。