Django-фильтры сбрасываются после использования UpdateView

У меня есть модель с большим количеством записей, поэтому я использую django-filters для фильтрации модели, я первоначально загружаю пустую таблицу и оттуда использую фильтр для просмотра элементов.

Все работает нормально, страница загружается изначально без записей, после фильтрации django показывает правильные элементы. Url получает параметр: /retetabloc/?acordcadru=532 (532 - это фильтр), но когда я пытаюсь обновить запись, фильтр сбрасывается (параметр все еще в URL) и загружается вся база данных.

Я не совсем понимаю, как передать параметр фильтра в RetetaBlocUpdate, чтобы после обновления вернуться к отфильтрованным элементам, как в ListView.

views.py

class RetetaBlocListview(LoginRequiredMixin, CoreListView):
    model = RetetaBloc       
    def get_queryset(self, *args, **kwargs):
        pdb.set_trace()
        acordcadru = self.request.GET.get("acordcadru")
        queryset = RetetaBloc.objects.filter(acordcadru=acordcadru)
        return queryset

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['filter'] = RetetaBlocFilter(self.request.GET, queryset=self.get_queryset())
        pdb.set_trace()
        return context

class RetetaBlocUpdate(LoginRequiredMixin, AjaxUpdateView):
    model = RetetaBloc
    form_class = RetetaBlocForm

Спасибо.

Если вы хотите, чтобы фильтры запоминались, вы можете добавить их в переменную сессии. Таким образом, фильтры будут вспоминаться, даже если они не возвращаются непосредственно со страницы обновления (и у вас не будет лишних URL запросов на страницах, где они не нужны). Что-то вроде:

def get_queryset(self, *args, **kwargs):
    pdb.set_trace()
    #check for new filter in URL first
    acordcadru = self.request.GET.get("acordcadru")
    #if nothing check for session variable
    if not acordcadru:
        acordccadru = self.request.session.get('acrodcadru')
    #if something in URL querystring, set it in session variable
    else:
         self.request.session['acordcadru'] = acordcadru
    queryset = RetetaBloc.objects.filter(acordcadru=acordcadru)
    return queryset
Вернуться на верх