我有一个基于 Wagtails 的模型Page
模型,我正在将自定义小部件分配给模型字段之一。渲染管理视图时是否可以在小部件 HTML 模板中访问模型实例?我需要管理视图中的小部件来知道哪个 IDSimplePage
该小部件所属,即获取值{{ page.id }}
.
# models.py
class SimplePage(Page):
name = RichTextField(blank=True)
geom = PointField()
content_panels = Page.content_panels + [
FieldPanel("name"),
FieldPanel("geom", widget=LeafletWidgetWithMedia()),
]
# widgets.py
class LeafletWidgetWithMedia(LeafletWidget):
include_media = True
template_name = "admin/widget.html"
我知道我可以像这样更新我的小部件的上下文:
# widgets.py
# ...
def get_context(self, name, value, attrs):
value = None if value in validators.EMPTY_VALUES else value
context = super(LeafletWidget, self).get_context(name, value, attrs)
context.update(self._get_attrs(name, attrs))
return context
但我不知道如何得到我的SimplePage
实例到小部件中以更新上下文。 (我也试过鹡鸰before_edit_page
hook https://docs.wagtail.io/en/stable/reference/hooks.html#editor-workflow没有成功。)