我想从表单中获取数据,表单根据列表被转载多次。每个项目的一种形式。该表格由复选框和文本框组成。如果复选框被选中,那么我也需要附带的文本框数据。Django验证错误u“''值必须是十进制数。”
视图:
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'']
尝试用'list_item.price = Decimal(price)'替换'list_item.price = price'。 – alecxe
我试过,但后来我得到一个'全球名称'十进制'没有定义' – apardes
不要忘记一个导入语句:'从十进制导入十进制' – alecxe