我有这个表单字段:
area = forms.DecimalField(max_digits=20)
当我发布它时,我得到unicode数据:
raise Exception(type(a.get('area',))
结果是
<type 'unicode'>
如何将其转换为浮动?我想对结果执行算术运算。
如果我这样做:
float(a.get('area', '0'))
然后我明白了
float()参数必须是字符串或数字
答案 0 :(得分:5)
如果处理了表单并且您将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
类型,并且与float
使用的pythons FloatField
不同。
Decimal Type在这里阅读更多有关十进制类型的信息。
答案 1 :(得分:0)
表单提交是字符串(我认为,在上传文件时除外。)在Django中,如果表单有效(表格方便!),表单会自动转换为相应的Python类型。您可以使用via {{{}来访问数据1}}(见Processing the data from the form。)
在这种情况下,您可能会执行以下操作:
cleaned_data
答案 2 :(得分:0)
你可以将它与包含你数据的变量一起使用。 {variable | Floatformat}我一直在模板中使用它。 可能会有所帮助。:)