2

我在 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. 有没有办法手动显示/设置表单的“值”字段的小数点分隔符?
  2. 如何全面了解我的语言环境设置?
  3. 有什么方法可以即时更改区域设置?

* 编辑 * : 我试图添加到 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
4

2 回答 2

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

有点复杂,但我认为应该可以。

于 2013-04-26T14:07:06.767 回答
0

django shell/ipython shell 似乎有一个错误,这就是它不起作用的原因。我把它移到了这个帖子

python django shell (ipython) 意外行为或错误?

于 2013-04-26T18:37:33.913 回答