繁体   English   中英

如何在Python Django中将DecimalField转换为float?

[英]How can i convert DecimalField to float in Python Django?

我有这个表单字段:

area = forms.DecimalField(max_digits=20)

当我发布它时,我得到unicode数据:

raise Exception(type(a.get('area',))

结果是

<type 'unicode'>

如何将其转换为浮动? 我想对结果执行算术运算。

如果我这样做:

float(a.get('area', '0'))

然后我明白了

float()参数必须是字符串或数字

如果表单被处理并且你的area<type 'unicode'>那么这应该足以转换它并对它进行算术运算。

area = form.data['area']
#area should be <type 'unicode'>
area_float = float(area)

请考虑以下示例

a = u'1.34'
a_float = float(a)
type(a_float)
>> <type 'float'>

但是考虑到DecimalField内部使用Pythons decimal类型,并且与FloatField使用的FloatField float不同。

十进制类型在这里阅读更多关于十进制类型。

表单提交是字符串(我认为,在上传文件时除外。)在Django中,如果表单有效(表格方便!),表单会自动转换为相应的Python类型。您可以使用via cleaned_data访问数据(请参阅处理来自表格的数据 。)

在这种情况下,您可能会执行以下操作:

if form.is_valid():
   # Form is valid, so do stuff with the form data
   # e.g. send email, save to DB etc.
   area = form.cleaned_data['area']
   # more code here

你可以将它与包含你数据的变量一起使用。 {variable | Floatformat}我一直在模板中使用它。 可能会有所帮助。:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM