如何在Wagtail CMS中使用图表

时间:2018-11-06 17:56:30

标签: python django charts wagtail wagtail-streamfield

我需要在流域函数中包含自定义图表,就像您发现的with Tauchart

但是用户如何从Wagtail管理员修改数据?我完全不知道该怎么做。

我正在考虑表单,但是可以将表单添加到流场吗?我想是的,我可以通过链接到现有表格来做到这一点。但这似乎很难做到,也不是一个好主意。

您如何看待? 什么是最佳做法?

您有Taucharts集成到CMS中的任何示例吗?

1 个答案:

答案 0 :(得分:0)

您可以在blocks.py中创建一个自定义块,例如LineChartBlock()引用了一个名为line_chart.html的模板。您需要将自定义块导入到models.py文件中,以将其添加到StreamField中。然后,CMS管理员端的用户可以输入值并将其保存为参数。然后,您可以将其作为动态JavaScript变量传递到模板中,以用于创建自定义图表。这是一个超级粗糙的主意...

所以blocks.py看起来像这样:

from wagtail.core import blocks

class LineChartBlock(blocks.StructBlock):
    title = blocks.CharBlock()
    x = blocks.DecimalBlock()
    y = blocks.DecimalBlock()
    data = JSONField()

    class Meta:
        template = 'blocks/line_chart.html'

您的模型。py:

class BlogPage(Page):
    body = StreamField([
        ('paragraph', RichTextBlock()),
        ('line_chart', LineChartBlock()),
    ])

您的模板:

<script>
    const title = "{{ title }}";
    const x = "{{ x }}";
    const y = "{{ y }}";
    const data = "{{ data }}";

    makeChartWizardry = () => {
       doStuff;
    }

</script>

<section>
    <div id="chart"></div>
</section>