我有一个抽象类,里面有hastreamfield。我还有一个从BasePage继承的CustomPage类。我希望CustomPage向内容添加新的StructBlock。我该怎么做?在
class BasePage(Page):
content = StreamField([
('ad', ...),
('text', ...),
('img', ...),
])
content_panels = Page.content_panels + [
StreamFieldPanel('content'),
]
class Meta:
abstract = True
class CustomPage(BasePage):
# add ('custom_block', ...) to content streamfield.
我在@gasman solutions旁边找到了另一个解决方案。在
它使用Stream field中的解构方法从BasePage StreamField中获取所有块。它在CustomPage中创建contentstreamfield时使用这些块。在
我现在就用这个,但我认为@gasman last solution是最漂亮的解决方案。在
StreamField定义不能以这种方式直接“扩展”,但是通过一点重新洗牌,您可以定义一个新的StreamField,该StreamField将重复使用相同的块列表:
或者在StreamBlock上使用继承(您可能认为这比连接列表更简洁:
^{pr2}$另外,请注意这是only possible since Django 1.10-旧版本的Django不允许重写抽象超类的字段。在
相关问题 更多 >
编程相关推荐