Фильтр доступных блоков для StreamField в интерфейсе редактора Wagtail
У меня есть следующие подклассы StructBlock и подкласс Page
class TestimonialBlock(blocks.StructBlock):
class Review(blocks.StructBlock):
text = blocks.TextBlock(label=_("Text"))
author = blocks.TextBlock(label=_("Author"))
link = blocks.URLBlock(required=False, label=_("Author link"))
class Meta:
icon = "openquote"
label = _("Testimonial")
title = blocks.TextBlock(required=False, label=_("Title"))
review_list = blocks.ListBlock(Review(), label=_("Review(s)"))
class TeamBlock(blocks.StructBlock):
class Member(blocks.StructBlock):
name = blocks.TextBlock(label=_("Name"))
role = blocks.TextBlock(label=_("Role"))
photo = ImageChooserBlock(label=_("Photo"))
link = blocks.URLBlock(required=False, label=_("Profile link"))
class Meta:
icon = "group"
label = _("Team")
title = blocks.TextBlock(required=False, label=_("Title"))
member_list = blocks.ListBlock(Member(), label=_("Member(s)"))
class RPTeamBlock(blocks.StructBlock):
class UpMembers(blocks.StructBlock):
photo = ImageChooserBlock(label=_("Photo"))
link = blocks.URLBlock(required=False, label=_("Profile link"))
class Meta:
icon = "group"
label = _("RPMember")
class DownMembers(blocks.StructBlock):
photo = ImageChooserBlock(label=_("Photo"))
link = blocks.URLBlock(required=False, label=_("Profile link"))
class Meta:
icon = "group"
label = _("RPMember")
class Meta:
icon = "group"
label = _("Team")
title = blocks.TextBlock(required=False, label=_("Title"))
up_member_list = blocks.ListBlock(UpMembers(), label=_("Member(s) top"))
down_member_list = blocks.ListBlock(DownMembers(), label=_("Member(s) down"))
class LandingPage(Page):
THEMES = [("transitive", "Transitive"), ("rp", "RP")]
# WEBSITE IDENTITY
website_theme = models.CharField(
blank=False,
null=False,
max_length=32,
choices=THEMES,
default=THEMES[0][0],
verbose_name=_("Theme"),
)
website_logo = models.ForeignKey(
"wagtailimages.Image",
blank=True,
null=True,
on_delete=models.SET_NULL,
verbose_name=_("Logo"),
related_name="website_logo",
)
# WEBSITE CONTENT
body = StreamField(
[
("testimonial", TestimonialBlock()),
("team", TeamBlock()),
("rpteam", RPTeamBlock()),
],
blank = True,
null = True,
use_json_field = True
)
content_panels = Page.content_panels + [
MultiFieldPanel(
[
FieldPanel("website_theme", widget=forms.Select),
FieldPanel("website_logo"),
],
_("Identity"),
),
StreamFieldPanel("body"),
]
При нажатии кнопки '+' в интерфейсе редактора для добавления нового блока в тело StreamFieldPanel я хочу, чтобы он показывал только один из блоков Team в зависимости от варианта, выбранного в поле 'website_theme' ('TeamBlock' для варианта 'Transitive' и 'RPTeamBlock' для варианта 'RP')
Можно ли это сделать в интерфейсе редактора Wagtail?