Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以显示/设置Django DecimalFields所需的十进制分隔符吗?_Django_Decimal - Fatal编程技术网

我可以显示/设置Django DecimalFields所需的十进制分隔符吗?

我可以显示/设置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

我在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 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中