表单中Django模型浮点字段的本地化

时间:2014-10-13 13:43:46

标签: django localization floating-point django-forms

我正在尝试在django表单中本地化模型浮点字段。

这种方式有效:

super(....)
self.fields["field_name"] = forms.FloatField(localize=True)

但是我不想定义新的表单字段,而是想将本地化添加到现有的模型字段中。这种方式不起作用:

super(....)
self.fields['field_name'].localize = True

有谁知道我的方法出错了?

谢谢, 纳斯

2 个答案:

答案 0 :(得分:3)

问题是表单字段在实例化时会执行各种初始化,并且在此之后设置localize属性不会重新运行该初始化。请参阅the code

您可以通过在窗口小部件上另外设置is_localized属性来获得您想要的大部分内容:

self.fields['field_name'].localize = True
self.fields['field_name'].widget.is_localized = True

但是在这一点上,你可能最好还是重新宣布这个领域。

答案 1 :(得分:1)

我的方法是:

settings.py

DECIMAL_SEPARATOR = ','
USE_THOUSAND_SEPARATOR = True

表格 __ init __ 功能

def __init__(self, *args, **kwargs):
    super(YourForm, self).__init__(*args, **kwargs)
    self.fields['field'].localize = True
    self.fields['field'].widget.is_localized = True