Трясогузка: Перенаправление после сохранения настроек сайта
Я пытаюсь перенаправить пользователя на пользовательскую 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