Речь идет о функции Форматная локализация , которая была реализована в Django 1.2.
Чтобы использовать эту функцию, необходимо добавить параметр localize=True
во все поля формы.Я пытаюсь реализовать эту локализацию в своем приложении, но проблема в том, что я создаю свои формы динамически, используя метод inlineformset_factory
, который предоставляет Django, поэтому я не могу просто добавить новый параметр в поле формы.
Поэтому я попытался включить эту функцию по умолчанию во всех моделях, не добавляя новый параметр для всех полей.Я создал подкласс BaseInlineFormSet и жестко закодировал в нем параметр.
class MyBaseInlineFormSet(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
super(MyBaseInlineFormSet, self).__init__(*args, **kwargs)
for form in self.forms:
for key, field in form.fields.iteritems():
if field.__class__ == forms.DecimalField:
form.fields[key].localize = True
Это сработало только на 50%.После отправки формы теперь корректно проверяются Django (он принимает запятые, а не только точки), но поля по-прежнему отображаются неправильно.
Полагаю, я мог бы избавиться от этой проблемы, но япредпочитаете избегать этого.
Есть идеи, как это решить?