Переписать верхнее меню с помощью DeleteView

У меня есть раздел 'About', который редко обновляется. Я хочу, чтобы при каждом обновлении этого раздела всплывающее меню генерировалось заново. Благодаря Лукасу Гругру см. мой предыдущий вопрос , я частично решил проблему, но не полностью.

Я переписываю меню в своих представлениях, которые изменяют структуру раздела (конкретно, PageUpdateView и PageDeleteView). Для этого я переписал их стандартный метод get_success_url, предполагая, что именно он реализуется в самый последний момент обновления/удаления страницы (или нет?). В этом методе я выбираю все объекты (страницы с их предварительно выбранными подстраницами), затем генерирую HTML код с помощью функции 'render_to_string', а затем записываю его в файл.

При использовании PageUpdateView это работает нормально, но когда я использую PageDeleteView, удаленная страница не удаляется из верхнего меню. Это происходит потому, что когда я выбираю объекты с помощью queryset (см. код ниже), удаленный объект все еще находится там.

about_list = Page.objects.filter(parent=None).order_by("order")./
                      annotate(num_subs=Count('subs')).prefetch_related(
    Prefetch(
        'subpages',
        Page.objects.annotate(num_subs=Count('subs')),
        'subpage')
    )

Конечно, я мог бы исключить этот объект по его slug-имени (exclude(slug=self.kwargs['slug'])), но я подозреваю, что должен существовать более правильный способ обновления меню после изменения структуры сайта.

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