我如何循环请求数据并将其作为一行发布到数据库中,用户可以提交多个描述、长度等,我遇到的问题是在数据库中创建大量行以获得最后一个A1的正确格式,但用户可以提交A1,1,1,1; A2,2,2,8,100等作为其一个动态添加窗体)
descriptions = request.POST.getlist('description')
lengths = request.POST.getlist('lengthx')
widths = request.POST.getlist('widthx')
depths = request.POST.getlist('depthx')
quantitys = request.POST.getlist('qtyx')
for description in descriptions:
for lengt in lengths:
for width in widths:
for depth in depths:
for quantity in quantitys:
newquoteitem = QuoteItem.objects.create(
qdescription=description,
qlength=lengt,
qwidth=width,
qdepth=depth,
qquantity=quantity,
quote_number=quotenumber,
)
1条答案
按热度按时间jdzmm42g1#
第一个解决方案
使用formsets。这正是它们应该处理的。
第二个解决方案
descriptions = request.POST.getlist('description')
返回了一个 all 描述的列表,假设有5个,它迭代了5次。现在lengths = request.POST.getlist('lengthx')
是一个 all 长度的列表,同样是5个,所以它将迭代5次,因为它嵌套在for循环的描述中,所以它迭代了25次!因此,尽管我仍然认为表单集是可行的方法,但您可以尝试以下方法:
这里,如果有5个描述,那么
len(descriptions)
将是5,并且有 * 一个 * 循环,其将总共迭代5次。