Django форма, обновляющая несколько записей

У меня есть 2 класса пользователей, которые могут просматривать экран со списком всех пользователей в моем приложении. Тип пользователя контролируется полем Boolean в модели User. В настоящее время на экране перечислены пользователи и различные подробности о них (см. ниже). Менеджеры проектов должны видеть страницу только для чтения, а администраторы должны иметь возможность редактировать пользователей.

enter image description here

HTML для экрана.

               <div class="card-body">
              <div class="table-responsive">
                <table class="table text-sm mb-0">
                  <thead>
                    <tr>
                      <th>#</th>
                      <th>Username</th>
                      <th>First Name</th>
                      <th>Last Name</th>
                      <th>Is Contributor?</th>
                      <th>Is Project Manager?</th>
                      <th>Is is_administrator?</th>
                    </tr>
                  </thead>
                  <tbody>
                    {% for user in users %}
                    <tr>
                      <th scope="row">{{ user.id }}</th>
                      <td>{{ user.username }}</td>
                      <td><a class="btn btn-primary" href=" " role="button">{{ user.first_name }}</a></td>
                      <td>{{ user.last_name }}</td>
                      <td>{{ user.is_contributor }}</td>
                      <td>{{ user.is_projectmanager }}</td>
                      <td>{{ user.is_administrator }}</td>
                      <td><a class="btn btn-info" href="" role="button">Edit</a></td>
                      <td><a class="btn btn-danger" href="" role="button">Delete</a></td>
                    </tr>
                    {% endfor %}
                  </tbody>
                </table>
              </div>
            </div>

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

Как создать форму, которая обновляет всех пользователей одновременно? Я хочу создать что-то, что перечисляет пользователей со списком полей, связанных с моделью, а затем дает администратору возможность изменить эти поля для нескольких пользователей одновременно, а затем нажать кнопку сохранения, чтобы отправить форму?

Мне удалось выяснить это, используя наборы форм Model. https://docs.djangoproject.com/en/3.2/topics/forms/modelforms/#model-formsets

Я только что создал набор форм, как показано ниже.

    UserFormSet = modelformset_factory(User,fields=('username','first_name','last_name','email','is_contributor','is_projectmanager','is_administrator'))
formset = UserFormSet()
context = {
    # 'users':users,
    'formset':formset,
}
return render(request, 'bugtracker_app/users.html', context)

Затем я проверил это в шаблоне:

                </div>
            {% for form in formset %}
            {{form}}
          {% endfor %}
          </div>

Пока он не отформатирован так, как я его себе представлял (он отображает поля вертикально, а не горизонтально, см. ниже, но я уверен, что смогу найти способ исправить это.

enter image description here

Вернуться на верх