我可以显示/设置Django DecimalFields所需的小数分隔符吗?

时间:2013-04-26 12:37:29

标签: django decimal

我在Django中有以下表格:

class MyForm(forms.ModelForm):
    val = forms.DecimalField(localize=True)
    class Meta:
        model = MyModel

使用以下模型:

class MyModel(models.Model):
    val = models.DecimalField("Betrag", max_digits=11, decimal_places=2)

我的settings.py包含:

LANGUAGE_CODE = 'de-de'
USE_I18N = True
USE_L10N = True
DECIMAL_SEPARATOR=','

以下列方式评估表单时,我收到错误:

form = MyForm({'val':'10,5'})
form['val'].errors 
# [u'Enter a number.']
form['val'].value()
# '10,5'

当然,如果我使用','我没有得到任何验证错误。作为小数点分隔符。

  1. 有没有办法手动显示/设置表单'value'字段的小数点分隔符?
  2. 如何获取我的区域设置?
  3. 有没有办法动态更改区域设置?
  4. *编辑* :我试图添加到MyForm:

    def __init__(self,*args,**kwargs):
        super(MyForm,self).__init__(*args,**kwargs)
        self.fields['val'].localize=True
        if __debug__:
            print self.fields['val'].localize
            print ("Separator: "+settings.DECIMAL_SEPARATOR)
            print ("Language: " +settings.LANGUAGE_CODE)
    

    执行时我正在:

    #True
    #Separator: ,
    #Language: de-de
    

2 个答案:

答案 0 :(得分:2)

像这样定义form类:

class MyForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(TestForm, self).__init__(*args, **kwargs)
        self.fields['val'].localize=True

    class Meta:
        model = MyModel

有点复杂,但我认为这应该有用。

答案 1 :(得分:0)

django shell / ipython shell似乎有错误,这就是为什么它不起作用。我把它移到了这个帖子

python django shell (ipython) unexpected behavior or bug?