Трясогузка: Перенаправление после сохранения настроек сайта

Я пытаюсь перенаправить пользователя на пользовательскую HTML-страницу после сохранения BaseSiteSetting модели в Wagtail 4.1.1

Я не уверен, как этого добиться, BaseSiteSetting наследуется от django models.Model, что означает, что можно переопределить save() function, но как мне сделать фактическое перенаправление, не имея доступа к запросу?

Другим приемлемым решением было бы добавить дополнительную кнопку в CMS, переопределив стандартную BaseSiteSetting HTML template, но я не могу заставить ее работать, за исключением шаблонов ModelAdmin. Я открыл вопрос на stackoverflow об этом здесь.

Мое представление с пользовательской HTML-страницей:

def sync(request):
    return render(request, "import.html", {"WS_PROTOCOL": settings.WS_PROTOCOL})

Моя модель BaseSiteSetting:

@register_setting
class AnonymousSuccessStoryImportSetting(BaseSiteSetting):
    """
    Setting for importing anonymous success stories.
    """

    file = models.FileField(
       upload_to="success_story_imports/%Y/%m/%d/",
        validators=[validate_file_extension],
        help_text="Upload a CSV file, then click 'Save' afterwards",
        blank=True,
        null=True,
    )
    date = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name = "Importer"

Я поискал возможные решения и нашел несколько крючков wagtail, но они применимы только к модели Wagtail Page, например: after_publish_page.

Жаль, что нет хука для стандартных моделей django.

Мне кажется, что BaseSiteSettings - это одна из моделей, которая не была преобразована для использования представлений на основе классов. Поэтому я думаю, что вам нужно сделать обезьянье исправление этого метода редактирования, чтобы изменить перенаправление 'после сохранения' здесь: https://github.com/wagtail/wagtail/blob/main/wagtail/contrib/settings/views.py#L121

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