格式化Django表单中的字段值

时间:2010-11-05 22:25:06

标签: django templates forms filter format

我有一个Django表单,其字段有时是空白的,有时会有一个默认的初始值,有时会填充来自关联模型的值。在后两种情况下,我有像这样出现在模板中的DecimalField:

<input type="text" name="foo" value="10.00"/>

问题是我希望能够使用模板过滤器或某些等效项来格式化该值属性。例如,对于上面的输入,我想使用floatformat过滤器,这样它就不会显示无关的尾随零,而只会打印:

<input type="text" name="foo" value="10"/>

之前有人遇到过这样的事情吗?

1 个答案:

答案 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行为。