Django - Как этот UpdateView может вернуться к фильтрованному TableView?

У меня есть проект Django, в котором есть TableView с фильтрами на нем. Он может перенаправлять на UpdateViews и DeleteViews из строк таблицы, и это работает нормально, и UpdateView правильно перенаправляет на TableView при успехе.

Моя проблема в том, что я не могу сделать UpdateView перенаправленным на TableView, сохраняя фильтры, которые были у TableView, когда был вызван UpdateView.

В UpdateView есть такой get_context_data метод, в котором я могу отправить отфильтрованный URL:

    def get_context_data(self, **kwargs):
        context = super(SaleUpdateView, self).get_context_data(**kwargs)
        ...
        context['referrer'] = self.request.META.get('HTTP_REFERER')
        return context

Я сделал кнопку в шаблоне HTML для перенаправления на этого реферера, который должен перенаправлять на фильтрованный TableView, но он перенаправляет меня на нефильтрованный TableView. Я думаю, что это связано с моим методом form_valid и методом get_success_url:

    def form_valid(self, form):
        ...
        return HttpResponseRedirect(self.get_success_url())


    def get_success_url(self, form):
        ...
        return reverse_lazy('sale_list')

Как я могу получить доступ к данным self.request.META.get('HTTP_REFERER') или referer, которые я отправил в шаблон, в контексте метода get_success_url?

Я представляю, что должны быть лучшие способы решения этой проблемы, но я решил проблему, сделав следующее:

1. Отправка referer в шаблон UpdateView следующим образом:

    def get_context_data(self, **kwargs):
        context = super(SaleDeleteView, self).get_context_data(**kwargs)
        context['referrer'] = self.request.META.get('HTTP_REFERER')
        return context

2. Добавляем его в <form> в скрытый ввод шаблона, как это:

<input name="referrer" id="id_referrer" type="hidden" value="{{ referrer }}">

3. Получение его в методе get_success_url в моем UpdateView

    def get_success_url(self):
        referrer = self.request.POST['referrer']
        if str(referrer) not in ['', 'None']:
            return referrer
        return reverse_lazy('sale_list')

Я добавил эту последнюю проверку на случай, если пользователь перезагрузит UpdateView, в этом случае referer будет пустым.

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