5

我有这个表单域:

area = forms.DecimalField(max_digits=20)

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

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

结果是

<type 'unicode'>

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

如果我这样做:

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

然后我得到这个

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

4

3 回答 3

5

如果表单被处理并且你得到你的areaas<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'>

但是考虑到 a 在内部DecimalField使用 Pythonsdecimal类型并且floatFloatField.

十进制类型在此处阅读有关十进制类型的更多信息。

于 2013-06-24T06:06:53.980 回答
0

表单提交是字符串(我认为上传文件时除外。)在 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
于 2013-06-24T05:21:58.190 回答
0

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

于 2013-06-24T05:41:17.833 回答