發生這種情況是因爲在編輯頁面後,頁面的草稿已保存到wagtailcore.PageRevision表中。當您返回編輯頁面時,此草稿將用於填充管理員表單。草稿在'after_page_edit'信號被觸發前保存,因此對Page的任何修改都不會包含在PageRevision中,因此下次加載管理界面時不會出現。
相反,您可以覆蓋用於頁面模型的形式,使用(目前無證,不好意思)功能:
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+)版本鶺鴒,以工作。
謝謝!我已經在研究自定義表單解決方案,我在Github的問題跟蹤器中看到了這個方案。非常感激! – dentemm