Django итерирует разбитый на страницы объект и отображает в виде таблицы в шаблоне HTML - PullRequest
0 голосов
/ 25 марта 2020

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

Цель состоит в том, чтобы разбить таблицу на страницы, чтобы уменьшить количество строк в представлении, и отобразить данные в каждой строке. Хотя шаблон HTML будет обслуживать более одной таблицы, указывать имя поля для указанной модели c не очень удобно.

Вот представление:

def my_view(request):
    model_list = Model.objects.all()
    field_names = [f.name for f in Model._meta.get_fields()][1:] # drop the id

    # object_values = []
    # for object in model_list:
    #     object_values.append([])
    #     for field in field_names:
    #         object_values[-1].append(getattr(object, field))

    paginator = Paginator(model_list, 10)
    page = request.GET.get('page', 1)
    try:
        data = paginator.page(page)
    except PageNotAnInteger:
        data = paginator.page(1)
    except EmptyPage:
        data = paginator.page(paginator.num_pages)
    return render(request, 'my_folder/my_view.html',
                  {'paginator': paginator, 'filter': model_list, 'table': data, 'field_names': field_names})

Вот мой HTML шаблон:

<table>
  <thead>
    <tr>
      <th class="action-checkbox">
        <div>
          <span>
            <input type="checkbox">
          </span>
        </div>
      </th>
      {% for header in field_names %}
      <th class="sortable-column-name">{{header}}</th>
      {% endfor %}
    </tr>
  </thead>
  <tbody>
  {% for rowval in table %}
       <tr>
         <th class="action-checkbox">
        <div>
          <span>
            <input type="checkbox">
          </span>
        </div>
      </th>
       {% for val in rowval  %}
         {% if forloop.counter == 2 %}
           <th>{{val}}</th>
         {% else %}
           <td>{{val}}</td>
         {% endif %}
       {% endfor %}
      </tr>
    {% endfor %}
  </tbody>
</table>

В этом коде есть ошибка, обозначающая, что 'Model': object is not iterable. Как мне перебрать страницу или объект модели?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...