Wagtail:如何将模型实例传递给小部件并在模板中访问它

2022-01-19 00:14:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个基于Wagtails Page模型的模型,我正在为其中一个模型字段分配一个自定义小部件。在呈现管理视图时,是否可以在widgets HTML模板中访问模型实例?我需要admin视图中的小部件知道SimplePage小部件属于哪个ID,即获取{{ 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实例放入小部件中以更新上下文。(我还尝试了Wagtailsbefore_edit_page{a1},但没有成功。)