从input type='number'
发送数据到django视图时遇到问题。
我有一个产品页面,每个产品都有一个复选框和数量选择(input type='number'
)
<form action="{% url 'create-order' %}" method="POST">
{% csrf_token %}
<table class="table table-responsive table-borderless">
<thead>
<th> </th>
<th>Quantity</th>
</thead>
<tbody>
{% for item in items %}
<tr class="align-middle alert border-bottom">
<td>
<input type="checkbox" id="check" name="item" value="{{ item.id }}">
</td>
<td>
<input class="input" min="1" value=1 type="number" name="quantity">
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="submitButton">
<button type="submit" class="lgbtn green">Go to order</button>
</div>
</form>
“提交”按钮转至视图:
def create_order(request):
quantities = request.POST.getlist('quantity')
items = request.POST.getlist('item')
return JsonResponse({
'quantities': quantities,
'items': items
})
例如,我有6个产品,id = 1、2、3、4、5、6。如果我选择1、2、3并设置数量:3,4,5,然后我得到:
items = [1, 2, 3] # it's OK
quantities = [3, 4, 5, 1, 1, 1] # but I need [3, 4, 5]
理想情况下,我希望项目和数量位于同一对象中(例如[(1, 3), (2, 4), (3, 5)]
或dict {1: 3, 2: 4, 3: 5}
),但这不是必须的,但在任何情况下,我都需要仅为已选中的项目选择数量
1条答案
按热度按时间yqyhoc1h1#
此标记基本上确保值至少为1。
对于下一个零件,您需要将正确的项目与其数量匹配,如果数量为0则跳过-但我们还需要进行一些错误检查,并且要执行此操作,必须知道哪个数量与哪个ID匹配。您可以使用以下代码来执行此操作:
虽然这不会检查未提交的项目与正数的数量(您可能需要JS),它会像您所期望的一个表单。