Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Wagtail CMS中的StreamField上添加文档?_Python_Django_Wagtail - Fatal编程技术网

Python 如何在Wagtail CMS中的StreamField上添加文档?

Python 如何在Wagtail CMS中的StreamField上添加文档?,python,django,wagtail,Python,Django,Wagtail,我有一个关于Wagtail CMS的问题 最近,我尝试以编程方式导入Wagtail页面模型实例的StreamField中的一些文档。我做了一些研究,但没有结果 目前我正在使用: 摇尾1.13 Django 1.11.6 Python 2.7 这里是我需要将文档作为附件导入的页面模型(请参见同名字段): 在shell上,我尝试应用上解释的解决方案,但没有成功 event = EventPage.objects.get(pk=20) doc = Document.objects.get(pk=3

我有一个关于Wagtail CMS的问题

最近,我尝试以编程方式导入Wagtail页面模型实例的StreamField中的一些文档。我做了一些研究,但没有结果

目前我正在使用:

  • 摇尾1.13
  • Django 1.11.6
  • Python 2.7
这里是我需要将文档作为附件导入的页面模型(请参见同名字段):

在shell上,我尝试应用上解释的解决方案,但没有成功

event = EventPage.objects.get(pk=20)
doc = Document.objects.get(pk=3)
event.attachments = [
    ('document',
        [
            StreamValue.StreamChild(
                id = None,
                block = DocumentChooserBlock(),
                value = doc
            )
        ]
    )
]

Python给了我这个错误:AttributeError:“list”对象没有属性“pk”。

event.attachments=[('document',doc)]
我相信应该可以工作。(在上,StreamChild是必需的,因为AccordionRepeaterBlock是嵌套在StreamBlock中的StreamBlock;您的定义并非如此。)

要将文档添加到现有StreamField内容,请构建新列表并将其分配给
事件。附件

new_attachments = [(block.block_type, block.value) for block in blocks]
new_attachments.append(('document', doc))
event.attachments = new_attachments

(目前您无法直接附加到StreamField值,但…

event.attachments=[('document',doc)]
应该可以工作,我相信。(在上,StreamChild是必需的,因为AccordionRepeaterBlock是嵌套在StreamBlock中的StreamBlock;您的定义并非如此。)

要将文档添加到现有StreamField内容,请构建新列表并将其分配给
事件。附件

new_attachments = [(block.block_type, block.value) for block in blocks]
new_attachments.append(('document', doc))
event.attachments = new_attachments
(当前无法直接附加到StreamField值,但…

以及当
事件.附件
已包含一些文档时是否要添加文档?以及当
事件.附件
已包含一些文档时是否要添加文档?