Как вставить несколько рядов данных из динамически сгенерированных строк в базу данных с помощью Python Django
У меня есть функция Javascript (addItem), которая позволяет пользователю добавить любое количество динамически сгенерированных строк данных и заполнить необходимые поля. Смотрите код ниже
<div class="modal-body">
<table class="table order-list table-striped" id="myTable">
<thead>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
<th>Total</th>
</tr>
</thead>
<tbody id="addItems">
</tbody>
</table>
<table>
<tbody>
<tr>
<td colspan="5" style="text-align: left;">
<button onclick="addItem();" class="btn btn-sm btn-success" id="sspusd1" value="Add Row"><i class="fa fa-plus"></i>Add Row</button>
</td>
<td colspan="5" style="text-align: left;">
</td>
</tr>
</tbody>
</table>
</div>
function addItem() {
renumber++;
var html = "<tr>";
html += "<td><select class='form-control'>{% for stock in stocks %}<option class='dropdown-item' value='{{stock.inventoryPart}}'>{{stock.inventoryPart}}</option>{% endfor %}</select></td>";
html += "<td><input type='number' class='form-control' onblur='lineTotal(this);' value='0' name='quantity[]'/></td>";
html += "<td><input type='text' class='form-control' onblur='lineTotal(this);' value='0' name='price[]'/></td>";
html += "<td><input type='text' id='lineTotal' class='form-control' value='0' disabled name='total[]' /></td>";
html += "</tr>";
document.getElementById("addItems").insertRow().innerHTML = html;
};
Однако, человек может вставить любое количество строк и вставить необходимые данные в доступные поля.
Проблема в том, что я не могу перехватить и сохранить динамическую информацию, введенную в эти динамические строки, поскольку Django не знает, сколько строк создал пользователь.
Цель состоит в том, чтобы иметь возможность хранить данные из созданных динамических строк, вставленных пользователем, в базе данных, используя Django
Насколько возможна такая функциональность? Я хотел бы получить помощь в этом вопросе. Спасибо.
Лучшим решением, которое я вижу, является использование наборов форм с HTMX. Вы можете последовать этому отличному руководству https://justdjango.com/blog/dynamic-forms-in-django-htmx
Предполагаю, что где-то в вашем html есть форма, подобная этой:
<form action="" method="post">
<!-- Your table etc. here -->
</form>
В этом случае попробуйте модифицировать представление таким образом:
if request.method == 'POST':
stocksArr = request.POST.getlist('stock')
quantityArr = request.POST.getlist('quantity')
priceArr = request.POST.getlist('price')
totalArr = request.POST.getlist('total')
print("---Array Data---")
print(stocksArr)
print(quantityArr)
print(priceArr)
print(totalArr)
Возможно, ваша форма не находила if 'Receipttotal' in request.POST:
. Попробуйте этот способ и дайте мне знать, если это решит вашу проблему.