如何从 Wagtail modeladmin 中的帮助面板访问实例?
How to access the instance from a HelpPanel in Wagtail modeladmin?
在 Wagtail 项目的 Django 模型中,该模型连接为 modeladmin 实例,我想从 HelpPanel
:
中的实例访问数据
# file: models.py
class ExpertiseApproval(models.Model):
expertise = models.ForeignKey(
ProfilePageExpertises,
on_delete=models.SET_NULL,
blank=True,
null=True,
)
approved = models.BooleanField(
default=False,
)
def get_expertise_repr(self):
return 'Expertise: {}'.format(self.expertise)
panels = [
HelpPanel(
heading='Approving expertises',
content='{}'.format(get_expertise_repr(self)),
),
FieldPanel('approved'),
]
但是使用上面的代码我得到了 "self is not defined":
# traceback snippet
content='{}'.format(get_expertise_repr(self)),
NameError: name 'self' is not defined
面板定义中的 self
似乎不是我想在此处使用的模型实例中的 self
。
知道如何从这个 HelpPanel
定义中的绑定模型实例访问数据吗?
我最近也有同样的问题。
事实证明,基 EditHandler class 可以访问该实例。因此,如果您尝试进入 HelpPanel 编辑处理程序的数据是模型上的一个字段,您应该能够从模板中访问该字段,并在那里进行格式化。我已经用 Wagtail Page 模型对此进行了测试,我相信它对于 Django/modeladmin 模型应该是相同的。
在您的帮助面板定义中,指定自定义模板:
HelpPanel(
heading='Approving expertises',
template='path/to/your/custom_help_panel_template.html',
)
省略内容参数并直接在此处添加详细信息:
<fieldset>
{% if self.heading %}
<legend>{{ self.heading }}</legend>
{% endif %}
<div class="{{ self.classname }}">Expertise: {{ self.instance.expertise }}</div>
</fieldset>
以上内容基于default HelpPanel template.
这对我们有用。如果您希望 HelpPanel 融入前面的字段,您甚至可以省略 fieldset 元素,或者如果尚未设置 instance/expertise 字段,则添加典型的模板逻辑以显示不同的消息。
在 Wagtail 项目的 Django 模型中,该模型连接为 modeladmin 实例,我想从 HelpPanel
:
# file: models.py
class ExpertiseApproval(models.Model):
expertise = models.ForeignKey(
ProfilePageExpertises,
on_delete=models.SET_NULL,
blank=True,
null=True,
)
approved = models.BooleanField(
default=False,
)
def get_expertise_repr(self):
return 'Expertise: {}'.format(self.expertise)
panels = [
HelpPanel(
heading='Approving expertises',
content='{}'.format(get_expertise_repr(self)),
),
FieldPanel('approved'),
]
但是使用上面的代码我得到了 "self is not defined":
# traceback snippet
content='{}'.format(get_expertise_repr(self)),
NameError: name 'self' is not defined
面板定义中的 self
似乎不是我想在此处使用的模型实例中的 self
。
知道如何从这个 HelpPanel
定义中的绑定模型实例访问数据吗?
我最近也有同样的问题。
事实证明,基 EditHandler class 可以访问该实例。因此,如果您尝试进入 HelpPanel 编辑处理程序的数据是模型上的一个字段,您应该能够从模板中访问该字段,并在那里进行格式化。我已经用 Wagtail Page 模型对此进行了测试,我相信它对于 Django/modeladmin 模型应该是相同的。
在您的帮助面板定义中,指定自定义模板:
HelpPanel(
heading='Approving expertises',
template='path/to/your/custom_help_panel_template.html',
)
省略内容参数并直接在此处添加详细信息:
<fieldset>
{% if self.heading %}
<legend>{{ self.heading }}</legend>
{% endif %}
<div class="{{ self.classname }}">Expertise: {{ self.instance.expertise }}</div>
</fieldset>
以上内容基于default HelpPanel template.
这对我们有用。如果您希望 HelpPanel 融入前面的字段,您甚至可以省略 fieldset 元素,或者如果尚未设置 instance/expertise 字段,则添加典型的模板逻辑以显示不同的消息。