默认情况下启用Django格式本地化

Ces*_*ssa 4 python django formatting localization

这是关于Django 1.2中实现的格式本地化功能.

要使用此功能,您必须localize=True向所有表单字段添加参数.我试图在我的应用程序中实现这种本地化,但问题是我通过使用inlineformset_factoryDjango提供的方法动态创建我的表单,所以我不能简单地向表单字段添加新参数.

因此,我尝试在所有模型中默认启用此功能,而无需为所有字段添加新参数.我创建了一个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
Run Code Online (Sandbox Code Playgroud)

那个只有50%.提交时,Django正在正确验证表单(它接受逗号而不是点)但字段仍然显示不正确.

我想我可以通过javascript来解决这个问题,但我更愿意避免这样做.

关于如何解决这个问题的任何想法?

Ces*_*ssa 6

Django 1.2现在已经3岁了.Django 1.6提供了解决困境的好方法:

来自文档:

默认情况下,ModelForm中的字段不会本地化其数据.要为字段启用本地化,可以使用Meta类的localized_fields属性.

>>> from django.forms import ModelForm
>>> from myapp.models import Author
>>> class AuthorForm(ModelForm):
...     class Meta:
...         model = Author
...         localized_fields = ('birth_date',)
Run Code Online (Sandbox Code Playgroud)

如果localized_fields设置为特殊值__all__,则将本地化所有字段