Django: Как я могу перенаправить на ListView с нумерацией страниц после отправки формы? - PullRequest
0 голосов
/ 24 февраля 2019

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

Мой список просмотра с обновлением в левом углу и всплывающей модальной форме для обновления

После нажатия кнопки «Сохранить» он будет перенаправлен в список записей без параметра пагинации. Как добавить параметр нумерации страниц в URL-адресе успеха.Пожалуйста, помогите

Мои views.py

def record_list(request):
    queryset_list = Record.objects.filter(recorded__lte=timezone.now()).order_by('-recorded')

    query = request.GET.get("q")

    if query:
        for term in query.split():
            queryset_list = Record.objects.filter(Q(persons__last_name__icontains=term) |
                                                  Q(persons__first_name__icontains=term) |
                                                  Q(persons__middle_name__icontains=term) |
                                                  Q(title__icontains=term)
                                                  )

    paginator = Paginator(queryset_list.order_by('-recorded'), 10)
    page_request_var = "page"
    page = request.GET.get('page', 1)

    try:
        queryset = paginator.page(page)
    except PageNotAnInteger:
        queryset = paginator.page(1)
    except EmptyPage:
        queryset = paginator.page(paginator.num_pages)

    context = {
        "record_list": queryset,
        "page_request_var": page_request_var,
        "title": "List",
    }

    return render(request, 'Bato_Cabugao/Record/record_list.html', context)

class RecordUpdateView(LoginRequiredMixin,generic.UpdateView):
    template_name = 'Bato_Cabugao/Record/record_update.html'
    model = Record
    form_class = RecordForm

Models.py

class Record(models.Model):
    title = models.CharField(max_length=200)
    persons = models.ManyToManyField(Person)
    details = models.TextField()
    recorded = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('Bato_Cabugao:list_record')

record_list.html - нумерация страниц

 {% if record_list.has_other_pages %}
            <nav aria-label="Page navigation example">
                <ul class="pagination justify-content-end">
                    {% if record_list.has_previous %}
                        <li class="page-item"><a class="page-link" href="?{{ page_request_var }}={{ record_list.previous_page_number }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">&laquo;</a>
                        </li>
                    {% else %}
                        <li class="disabled page-item"><span class="page-link">&laquo;</span></li>
                    {% endif %}

                    {% if record_list.number|add:'-4' > 1 %}
                        <li class="page-item"><a class="page-link" href="?page={{ record_list.number|add:' -5' }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">&hellip;</a>
                        </li>
                    {% endif %}

                    {% for i in record_list.paginator.page_range %}
                        {% if record_list.number == i %}
                            <li class="page-item page-link"><span>{{ i }} <span
                                    class="sr-only">(current)</span></span></li>
                        {% elif i > record_list.number|add:'-5' and i < record_list.number|add:'5' %}
                            <li class="page-item"><a class="page-link" href="?{{ page_request_var }}={{ i }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">{{ i }}</a></li>
                        {% endif %}
                    {% endfor %}

                    {% if record_list.paginator.num_pages > record_list.number|add:'4' %}
                        <li class="page-item">
                            <a class="page-link" href="?page={{ record_list.number|add:'5' }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">&hellip;</a>
                        </li>
                    {% endif %}

                    {% if record_list.has_next %}
                        <li class="page-item">
                            <a class="page-link"
                               href="?{{ page_request_var }}={{ record_list.next_page_number }}{% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">&raquo;
                            </a>
                        </li>
                    {% else %}
                        <li class="page-item disabled"><span class="page-link">&raquo;</span></li>
                    {% endif %}
                </ul>
            </nav>
        {% endif %}

1 Ответ

0 голосов
/ 24 февраля 2019

Отправьте current page number вместе с Record данными на UpdateView.Затем определите метод get_success_url в View, как показано ниже.

class RecordUpdateView(LoginRequiredMixin,generic.UpdateView):
    ...

    def get_success_url(self):
        current_page = self.request.POST.get('current_page')

        return <url_to_record_list> + '?page=' + current_page

Предполагая, что у вас есть номер текущей страницы в request.GET или request.POST, вы можете создать и вернуть окончательный URL-адрес, который вам нужен.

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