Как добавить нумерацию страниц к отфильтрованной таблице? - PullRequest
0 голосов
/ 20 июня 2020

Ниже приведен пример кода, который у меня есть для страницы, которая показывает таблицу данных с параметрами crud для редактирования, обновления и удаления записей. Я добавил django фильтры, и он фильтрует данные и отображает набор запросов, однако я не могу добавить на страницу разбиение на страницы. Не могли бы вы помочь советом как его добавить. Также я показываю фильтры в виде формы, однако можно ли добавлять их по отдельности, чтобы я мог их отформатировать ..

Шаблон:

<div>
<form action="" method="GET">
{{ mytablefilters.form }} *# Is it possible to show the elements separately so that they can be arranged and formatted easily*
<button type="submit">FILTER DATA</button>

<Table>
<thead>
<tr>
<th> Employee Name </th>
<th> Employee Email </th>
<th> Employee Status </th>
</tr>
</thead>
</tbody>
{% for entry in tablefilters.qs %}
<tr>
<td>{{entry.employeename}}</td>
<td>{{entry.employeeemail}}</td>
<td>{{entry.employeestatus}}</td>
</tr>
</tbody>

Views.py

from .filters import mytablefilters
from django.views.generic.list import ListView

class tablenameview(ListView):
model = tablename
template_name = 'Index.html'

def get_context_data(self, **kwargs):
context=super().get_context_data(**kwargs)
context['mytablefilters'] = mytabelfilters(self.request.GET,queryset=self.get_queryset())
return context

Большое спасибо!

1 Ответ

0 голосов
/ 20 июня 2020

лучшим решением будет перезапись метода get_queryset . Например:

views.py

class TableNameView(ListView):

    model = tablename
    context_object_name = 'mytablefilters'

    def get_queryset(self):
        return mytabelfilters(
            self.request.GET,
            queryset=self.model.objects.all()
        )

Шаблон:

<table>
    <thead>
        <tr>
            <th> Employee Name </th>
            <th> Employee Email </th>
            <th> Employee Status </th>
        </tr>
    </thead>
    <tbody>
        {% for entry in mytablefilters.qs %}
            <tr>
                <td>{{entry.employeename}}</td>
                <td>{{entry.employeeemail}}</td>
                <td>{{entry.employeestatus}}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>
<ul class="pagination">
  {% for i in paginator.page_range %}
    {% if page_obj.number == i %}
      <li class="active"><span>{{ i }}<span class="sr-only">(current)</span></span></li>
    {% else %}
      <li><a href="{% url 'YourPaginationUrl' page=i %}" class="paginate-link">{{ i }}</a></li>
    {% endif %}
  {% endfor %}
</ul>
...