Форматирование значений полей в форме Django - PullRequest
1 голос
/ 06 ноября 2010

У меня есть форма Django, поля которой иногда пусты, иногда имеют начальное значение по умолчанию, а иногда заполняются значениями из связанной модели. В последних двух случаях у меня есть DecimalFields, которые выходят в шаблон следующим образом:

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

Проблема в том, что я хочу иметь возможность форматировать этот атрибут значения с помощью шаблонных фильтров или какого-либо аналога. Например, для указанного выше ввода я хотел бы использовать фильтр с плавающей запятой, чтобы вместо отображения посторонних конечных нулей он просто печатал:

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

Кто-нибудь сталкивался с чем-то подобным раньше?

1 Ответ

1 голос
/ 06 ноября 2010

Я предполагаю, что вы используете {{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, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...