Как добавить несколько строк в таблицу за одну отправку в 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)

Я рекомендую использовать метод массового создания, так как он более эффективен.

Другие вопросы по тегам