Цикл Django request.POST
Как я могу просмотреть данные запроса и отправить их в виде одной строки в базу данных, пользователь может отправить несколько описаний, длин и так далее, проблема в том, что в базе данных создается огромное количество строк, чтобы получить правильный формат последнего A1, но пользователь может отправить A1,1,1,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,
)
Первые решения
.
Используйте наборы форм. Это именно то, для чего они предназначены.
Второе решение
.
descriptions = request.POST.getlist('description')
возвращает список all описаний, поэтому, допустим, их 5, итерация выполняется 5 раз. Теперь lengths = request.POST.getlist('lengthx')
- это список длин all, опять же, их 5, поэтому он будет повторяться 5 раз, а так как он вложен в цикл описания for, то это 25 раз!
Итак, хотя я все еще думаю, что наборы форм - это путь, вы можете попробовать следующее:
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 i in range(len(descriptions)):
newquoteitem = QuoteItem.objects.create(
qdescription=descriptions[i],
qlength=lengths[i],
qwidth=widths[i],
qdepth=depths[i],
qquantity=quantitys[i],
quote_number=quotenumber,
)
Здесь, если есть 5 описаний, то len(descriptions)
будет 5, и есть один цикл, который будет итерироваться 5 раз в общей сложности.