我在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'
当然,如果我使用','我没有得到任何验证错误。作为小数点分隔符。
*编辑* :我试图添加到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
答案 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似乎有错误,这就是为什么它不起作用。我把它移到了这个帖子