Как решить проблему ошибки django.core.paginator.EmptyPage?
Я пытаюсь фильтровать и пагинацию объектов в шаблоне. Я создал представление и у меня есть 3 объекта. Я хочу перечислить 1 объект на странице. Когда я это делаю, он показывает номера страниц (должно быть 3 страницы), когда я нажимаю кнопку next, он выдает ошибку:
raise EmptyPage(_('Эта страница не содержит результатов')) django.core.paginator.EmptyPage: Эта страница не содержит результатов
Как я могу это решить?
просмотров
class EntitySelect(FormView):
template_name = 'sgm/entity_select.html'
form_class = EntitySelectForm
def get_context_data(self):
self.context = super().get_context_data(**self.kwargs)
process_type = ProcessType.objects.get(id=self.kwargs['process_type'])
entity = process_type.consolidate_on
rows = getattr(entities, entity).objects.all()
paginator = Paginator(rows, 10)
page_number = self.request.GET.get('page')
if page_number == None:
page_number = 1
page_obj = paginator.page(int(page_number))
rows = getattr(entities, entity).objects.all()
if entity == 'Merchant':
tableFilter = MerchantFilter(self.request.GET, queryset=rows)
else:
tableFilter = CustomerFilter(self.request.GET, queryset=rows)
rows_2 = tableFilter.qs
paginator = Paginator(rows_2, 2)
page_number = self.request.GET.get('page')
if page_number == None:
page_number = 1
page_obj = paginator.page(int(page_number))
self.context['entity_type'] = entity
self.context['columns'] = [field.name for field in getattr(entities, entity)._meta.local_fields if
field.name != 'entity_ptr']
self.context['tableFilter'] = tableFilter
self.context['columns'] = [field.name for field in getattr(entities, entity)._meta.local_fields if field.name != 'entity_ptr']
self.context['rows'] = page_obj
self.context['process_type'] = process_type
шаблон
<table class="table table-striped table-condensed table-hover">
<thead>
<th> Select </th>
{% for column in columns %}
<th> {{ column|title|pretty_title }}</th>
{% endfor %}
</thead>
{% for row in rows %}
<tr onclick="checked(`{{ row.id }}`)">
<td>
<input type="radio" id="{{ row.id }}" name="entity" value="{{ row.identifier }}" required>
</td>
<label for="{{ row.identifier }}">
{% for column in columns %}
<td> {% if row|get_obj_attr:column %}{{ row|get_obj_attr:column }}{% else %} {% endif %}</td>
{% endfor %}
</label>
</tr>
{% endfor %}
</table>
<div class="col-4 offset-4">
<nav aria-label="...">
<ul class="pagination">
{% if rows.has_previous %}
<li class="page-item">
<a href="?page={{ rows.previous_page_number }}" class="page-link">Previous</a>
</li>
<li>
<a class="page-link" href="?page={{ rows.previous_page_number }}">
{{ rows.previous_page_number }}
</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link">Previous</span>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ rows.number }}</span>
</li>
{% if rows.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ rows.next_page_number }}">
{{ rows.next_page_number }}
</a>
</li>
<li class="page-item ">
<a class="page-link" href="?page={{ rows.next_page_number }}">Next</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link">Next</span>
</li>
{% endif %}
</ul>
</nav>
</div>