我正在尝试将新闻项目中的内容复制到我编写的其他内容类型。在我的脚本中我有news
项目和project
物品。第二,project
,是使用 Dexterity 定义的内容类型。如果我可以复制图像和正文,那就太好了news
to project
在接下来的方式中。
project.text = news.text
project.image = news.image
其中文本和图像定义在project
架构为 RichText 和 NamedBlobImage。我不知道新闻中的属性如何。我只知道我可以使用该方法获取新闻中的图像getImage()
但将其分配给项目会在渲染项目时生成错误。
所以我需要一些指导来解决我的基本问题:
我如何知道原型内容类型的属性名称。例如,在本例中,我需要知道新闻项目正文的属性名称。
如何将附加到新闻项目的图像转换为附加到敏捷内容类型的图像。
-
您可以使用原型架构中的字段来检索值,在本例中最好是原始值。您传入对象然后调用.get()
or .getRaw()
:
schema = news.Schema()
news = schema.getField('text').getRaw(news)
imageField = schema.getField('image')
image = imageField.getRaw(news)
content_type = imageField.getContentType(news)
filename = imageField.getFilename(news)
-
返回的对象ImageField.getRaw()
呼叫基本上是OFS.Image
实例。您可以致电str()
其上获取原始图像数据。
To set图像对象,您确实想从模式中获取图像字段并使用它._type
作为工厂的属性:
project.image = IProjectInterface.image._type(str(image),
contentType=content_type, filename=filename)
这里的内容类型是可选的;这NamedImage
and NamedBlobImage
types 也会自动嗅出内容类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)