Как добавить несколько строк в таблицу за одну отправку в Django
Я добавляю объект через кнопку отправки, создавая шаблон без использования Forms.py. Здесь я хочу добавить несколько строк в одно представление. Потому что бывают случаи, когда все поля, кроме одного, имеют одинаковое значение. Итак, я хочу знать, как добавить несколько строк в одно представление без отправки каждый раз.
[добавить.html]
<form id="add-form" class="forms-sample" method="post" action="/add/" enctype="multipart/form-data">
{% csrf_token %}
{% include 'add_form.html' %}
<div class="mt-2" style="text-align:right;">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
[add_form.html]
<div>
<label class="col-sm-3 font-weight-bold col-form-label pl-3 striped text-black">Date
{% autoescape off %}
<div class="text-danger small" style="line-height: 1rem;">{{ errors.date }}</div>
{% endautoescape %}
</label>
<div class="col-sm-9 form-input-container">
<div>
<input autocomplete="off" class="form-control col-sm-12 date" name="date" id="date"
value="{{ supporting.date|date:'Y/m/d H:i' }}" >
</div>
</div>
</div>
<div>
<label class="col-sm-3 font-weight-bold col-form-label pl-3 striped text-black">종류
{% autoescape off %}
<div class="text-danger small" style="line-height: 1rem;">{{ errors.kinds }}</div>
{% endautoescape %}
</label>
<div class="col-sm-9 form-input-container">
<div>
<select id="kinds" name="kinds" style="margin-top: 4px; margin-bottom: 7px; padding: 1px 0.5rem 0 0.5rem; height: 2rem;">
<option value="">-------</option>
<option value="A" {% if "A" == supporting.kinds %} selected {% endif %}>A</option>
<option value="B" {% if "B" == supporting.kinds %} selected {% endif %}>B</option>
</select>
</div>
</div>
</div>
<div>
<label class="col-sm-3 font-weight-bold col-form-label pl-3 striped text-black">Hour
{% autoescape off %}
<div class="text-danger small" style="line-height: 1rem;">{{ errors.hour }}</div>
{% endautoescape %}
</label>
<div class="col-sm-9 form-input-container">
<div>
<input type="number" step="0.1" class="form-control col-sm-3" name="hour" placeholder="hr"
value="{% if supporting.hour %}{{ supporting.hour }}{% endif %}">
</div>
</div>
</div>
Я наткнулся на метод транзакции или массового создания через Google, но, похоже, это не тот метод, который мне нужен. Если знаете решение, помогите!
1 ответ
Я не думаю, что правильно понял вопрос. Если вы хотите создать несколько объектов и отправляете правильные данные, это можно сделать с помощью -
model_name.objects.bulk_create([
... model_name(headline='first data object'),
... model_name(headline='second data object'),
... ])
но вы не хотите этого. Таким образом, вы также можете использовать цикл для создания нескольких объектов:
for objects in range(x):
model_name.objects.create(data)
Я рекомендую использовать метод массового создания, так как он более эффективен.