gpt4 book ai didi

python - 以编程方式更新 Wagtail 中的编辑界面

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:50 25 4
gpt4 key购买 nike

我正在开发一个 Django Wagtail 项目,我有时会在“after_edit_page” Hook 中更改页面数据。我所做的是为 ForeignKey 关系设置一个值,其中该对象是一个 Snippet。当我更新页面字段时,我可以在实时页面中正确看到这些更改,因此模型被正确保存。但是当我进入编辑界面时,我在 SnippetChooserPanel 中看不到同样的变化,它仍然是空的。

因为这对页面编辑来说非常困惑,我想知道如何以编程方式更新管理中的编辑器面板?

最佳答案

发生这种情况是因为页面草稿在您编辑页面后保存到 wagtailcore.PageRevision 表中。当您返回编辑页面时,此草稿将用于填充管理表单。草稿在“after_page_edit”信号被触发之前保存,因此对页面的任何修改都不会包含在 PageRevision 中,因此在您下次加载管理界面时不会出现。

相反,您可以使用(抱歉,目前未记录)功能覆盖用于 Page 模型的表单:

from wagtail.wagtailadmin.forms import WagtailAdminPageForm
from wagtail.wagtailcore.models import Page

class MyPageForm(WagtailAdminPageForm):
def clean(self):
cleaned_data = super(MyPageForm, self).clean()
# Set the snippet to a new value
cleaned_data['snippet'] = MySnippet.objects.get()
return cleaned_data

class MyPage(Page):
# Your fields, etc here...

base_form_class = MyPageForm

此功能需要最新 (1.4.3+) 版本的 Wagtail 才能运行。

关于python - 以编程方式更新 Wagtail 中的编辑界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36631982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com