Django验证错误u“''值必须是十进制数。”

时间:2013-08-28 19:45:45

标签: python django decimal

我正在尝试从表单中获取数据,表单基于列表被多次复制。每个项目的一种形式。表单由复选框和文本字段组成。如果选中该复选框,那么我也需要附带的文本字段数据。

视图:

        for item in request.POST.getlist('item_list'):
            item_id = int(item)
            item = Item.objects.get(id=item_id)
            item_name = item.name
            print item_name


            list = List(name = item_name, created_on = now, edited_on = now)

            for price in request.POST.getlist('price'):
                print price
                list_item.price = price
                list_item.save()
            #item.delete()

上面未显示now = timezone.now()

模板:

<form action="" method="post">

    {% csrf_token %}

    {% for item in item_list %}
        <input type="checkbox" name="item" value="{{item.id}}">{{item.name}} <input type="text" name="price"><br>
    {% endfor %}

    <input type="submit" value="Add Items">

</form>

这将返回validationerror [u"'' value must be a decimal number."]。我无法弄清楚为什么它会说我输入的数字不是小数。谢谢你的帮助。

更新

我提出print request.POST.getlist('price')时的输出是[u'2.55', u'4.32', u'23.421', u'3.00', u'', u'']

1 个答案:

答案 0 :(得分:2)

列表中有空price个,跳过它们。此外,将字符串转换为小数:

from decimal import Decimal

...

for price in request.POST.getlist('price'):
    if not price:
        continue
    list_item.price = Decimal(price)
    list_item.save()