小编Md.*_*Chy的帖子

如何以编程方式创建 Page 并设置其 StreamField 值?

我想以编程方式创建一个 BlogPagewagtail并设置其 StreamField 值。我可以设置heading字段。AttributeError: 'unicode' object has no attribute 'source'但当我尝试设置字段时,我得到了paragraph。我也想设置一个图像。

这是我的 BlogPage 模型。

models.py

class BlogPage(Page):
template = 'wagtail/test_page.html'
author = models.CharField(max_length=255)
date = models.DateField("Post date")
body = StreamField([
    ('heading', blocks.CharBlock(classname="full title")),
    ('paragraph', blocks.RichTextBlock()),
    ('image', ImageChooserBlock()),
])

content_panels = Page.content_panels + [
    FieldPanel('author'),
    FieldPanel('date'),
    StreamFieldPanel('body'),
]
Run Code Online (Sandbox Code Playgroud)

这是我通过运行此脚本来创建页面的代码。

create_page.py

new_image_page = BlogPage(
    title='Blog',
    slug='michael',
    author='michael',
    date='2017-12-13',
    body=[('heading','New Heading'), ('heading','New Heading 23232'), ('paragraph','My Paragraph')]
)

directory_page = Page.objects.get(slug='home')
directory_page.add_child(instance=new_image_page)
revision = new_image_page.save_revision()
revision.publish()
new_image_page.save()
Run Code Online (Sandbox Code Playgroud)

python django wagtail

7
推荐指数
2
解决办法
3070
查看次数

标签 统计

django ×1

python ×1

wagtail ×1