我正在尝试在Wagtail中实现图表块,用户可以通过DocumentChooserPanel上传电子表格,然后根据该电子表格中的数据生成图表。
我目前正在运行,但用户必须明确指定他们希望图表基于的变量:
class ChartBlock(blocks.StructBlock):
data_file = DocumentChooserBlock()
primary_variable = blocks.CharBlock(required=True,max_length=255)
class Meta:
template = 'dataviz/blocks/Chart.html'
icon = 'cogs'
label = 'Chart'
我想知道是否有任何方法可以使用上传并存储在Documents中的电子表格中的列标题动态填充primary_variable字段 - 这样用户就可以从可用变量列表中进行选择而不必记住调用变量的内容。
非常感谢你!
答案 0 :(得分:1)
使用Wagtail的vanilla实现这并不容易。
在页面加载时生成页面编辑表单,包括选择列表的填充。我很确定StreamField块中的选项列表也是如此,它们在添加块时填充。
这个代码挂在wagtailadmin.edit_handlers,wagtailadmin.views.pages和wagtailcore.blocks之间。这将是一个非常复杂的定制。
调查的另一个可能途径是使用insert_editor_js挂钩在文档上传后更新primary_variable字段。但是,我不确定你是否会找到一个可靠的ID来挂起事件监听器。
但是,您很快就可以自定义验证提交的页面。 PR has just been submitted允许此自定义验证。这应该可以减少添加primary_variable时的用户错误量。
此功能应该在Wagtail 1.4中提供,我相信很快就会发布。
我希望有所帮助。