我想执行以下操作:
所以,可以说,我们有一个这样的模型:
class Person(models.Model):
name = models.CharField(max_length=30)
然后我有一个使用StreamField的普通页面:
class NormalPage(Page):
body = StreamField(block_types=[
('paragraph', blocks.RichTextBlock()),
])
content_panels = Page.content_panels + [
StreamFieldPanel('body')
]
我希望编辑者从数据库中选择他/她想要的人,并能够在RichTextBlock中执行以下操作:
{{ person.name }}
这可能吗?
答案 0 :(得分:1)
为了能够选择普通的Django模型,请将其注册为代码段,如图here所示,然后使用SnippetChooserPanel选择人物:
from wagtail.snippets.models import register_snippet
@register_snippet
class Person(models.Model):
name = models.CharField(max_length=30)
然后,如果您想将特定人员与特定页面相关联:
from wagtail.snippets.edit_handlers import SnippetChooserPanel
class NormalPage(Page):
body = StreamField(block_types=[
('paragraph', blocks.RichTextBlock()),
])
person = models.ForeignKeyField(Person)
content_panels = Page.content_panels + [
StreamFieldPanel('body'),
SnippetChooserPanel('person'),
]