我已经创建了SolutionPage
,在它的content
字段中有一个嵌套的short_portfolio
块。我已经通过Wagtail管理面板向PageChooserBlock
添加了几个ProjectPage
实例。在
class SolutionPage(Page):
...
content = StreamField([
...
...
('short_portfolio', blocks.StructBlock([
('title', blocks.CharBlock(required=False)),
('description', blocks.RichTextBlock(required=True)),
('projects', blocks.StreamBlock([
('project', blocks.PageChooserBlock(ProjectPage)),
], required=False, max_num=4)),
])),
], blank=True, null=True, validators=[UniqueProjectsInShortPortfolioValidator()])
现在,我正在为PDF导出工作API视图,我需要从给定的SolutionPage
中提取所有ProjectPage
对象
问题是,用这种方法我只能提取页面的“模式”之类的内容,而不能提取它的实际内容。在
TypeError at /solutions/ai-driven-machine-learning-software/portfolio-pdf/
'StreamBlock' object is not iterable
solution_page.content.stream_block.child_blocks["short_portfolio"]
将给出short_portfolio
块的定义,而不是该块的特定实例。为此,您需要遍历字段内容,寻找与block_type
匹配的块:相关问题 更多 >
编程相关推荐