Как переопределить GET в Django Detailview?

У меня есть FORMVIEW, который перенаправляет на DETAILVIEW, и он отлично работает. Проблема у меня возникает, когда я пытаюсь объединить Pagination с DetailView. Когда я пытаюсь использовать пагинацию, GET по сути перенаправляет меня на FORMVIEW. Я понимаю, почему он это делает... Я говорю ему об этом. Я пытаюсь понять, как я могу включить некоторую логику в мой переопределенный GET. Я пытался сделать self.GET_OBJECT.pk... чтобы посмотреть, смогу ли я определить, нахожусь ли я на текущей странице, а не на FORMVIEW, но это не сработало...

Вот мой подробный обзор....

def get_context_data(self, **kwargs):
    context = super(SuggestionByNameDetailView, self).get_context_data(**kwargs)
    attachments = SuggestionFiles.objects.filter(suggestion=self.object.pk).all()
    comment_form = SuggestionCommentForm()
    response_form = SuggestionCommentReplyForm()
    activities= self.get_related_activities()
    context['suggestion_comments'] = activities
    context['page_obj'] = activities
    context['attachments'] = attachments
    context['comment_form'] = comment_form
    context['response_form'] = response_form
    return context

def get_related_activities(self):
    queryset = self.object.suggestion_comments.all()
    paginator = Paginator(queryset,5) #paginate_by
    page = self.request.GET.get('page')
    activities = paginator.get_page(page)
    return activities

def get_object(self, queryset=None):
    return get_object_or_404(Suggestion, id=self.request.GET.get("dropdown"))

def get(self, request, *args, **kwargs):
    dropdown=self.request.GET.get("dropdown")

    if dropdown is not None:
        if Suggestion.objects.filter(Q(id=self.request.GET.get("dropdown"))).distinct():
            self.object = self.get_object()
            context = self.get_context_data(object=self.object)
            return self.render_to_response(context)
        else:
            raise Http404
    else:
        messages.add_message(self.request, messages.INFO, 'Suggestion is required.')
        return HttpResponseRedirect(reverse('Suggestions:suggestion_by_name'))

Как уже упоминалось, я пытался сделать что-то вроде... if DROPDOWN is NONE and pk = self.get_object().pk... чтобы попытаться определить, могу ли я просто обойти логику DROPDOWN в GET... но PK всегда присутствует... Я также пытался сделать что-то вроде self.request.GET.get('pk'), но это тоже не сработало.

Когда я нажимаю, чтобы сделать пагинацию, я перенаправляюсь обратно на FORMVIEW. Я пытаюсь избежать этого, когда я нахожусь на DETAILVIEW. Заранее спасибо за любые мысли о том, что я могу сделать, чтобы решить эту проблему.

После пары часов работы.... выяснилось, что....GET может быть проблемой... но вот способ ее решить..... "Консервированный" код django... для пагинации выглядит примерно так...

<a href="?page={{ page_obj.next_page_number }}" class="button77">Next</a>

В моем случае... мне просто нужно было уточнить свой URL... так что теперь он выглядит как....

<a href="/LevelSet/Suggestions/suggestion_by_name_detail/26a12149-62bf-48fe-8e7e-3a71231f7229/?dropdown={{dropdown}}&page={{ page_obj.next_page_number }}" class="button77">Next</a>

Дело закрыто. Во всяком случае, этот. :).

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