我可以显示/设置Django DecimalFields所需的十进制分隔符吗?
我在Django有以下表格:我可以显示/设置Django DecimalFields所需的十进制分隔符吗?,django,decimal,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) My setti
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)
My 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'
当然,如果使用“.”作为小数分隔符,则不会出现任何验证错误
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
像这样定义
表单
类:
class MyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(TestForm, self).__init__(*args, **kwargs)
self.fields['val'].localize=True
class Meta:
model = MyModel
这有点复杂,但我认为应该可以使用。django shell/ipython shell似乎有一个错误,这就是它不起作用的原因。我把它移到了这个位置
尝试将此添加到您的
settings.py
:DECIMAL\u SEPARATOR=”,“
已经这样做了:)没有发生什么不好的事情,没有看到它。您可以使用更改语言环境设置并请求使用当前语言环境。我已经尝试过了,并且成功了。但首先它会产生一个“Field mandatory”错误,因为表单字段被称为val
,并且在表单初始化时您有value
。尝试更改为这个form=MyForm({'val':'10,5'})
:PHint:为了进行调试,您可以使用python调试器dbg
。在需要断点的地方添加这一行,并从服务器运行的控制台控制它:import pdb;pdb.set_trace()
。另外,为什么不工作?它是否产生了同样的错误?它是否打印了localize=True?您必须将其添加到MyForm
类中,而不是添加到MyModel
。仍然保留相同的验证错误。我开始对它发火了。但我真的很感谢您的帮助:)您是否将其添加到MyForm类中,但仍然存在相同的错误?请注意,在您的编辑中,您说您已将其添加到MyModel classlet中