Dan*_*dez 6 plone archetypes dexterity
我正在尝试将新闻项目中的内容复制到我编写的其他内容类型中.在我的脚本中,我有news项目和project项目.第二个project是使用Dexterity定义的内容类型.这将是美好的,如果我能到图像和正文从复制news到project在未来的方式.
project.text = news.text
project.image = news.image
Run Code Online (Sandbox Code Playgroud)
其中文本和图像在project架构中定义为RichText和NamedBlobImage.我不知道新闻项中的属性如何.我只知道我可以使用该方法获取新闻项中的图像,getImage()但是将其分配给项目在渲染项目时会产生错误.
所以我需要一些指针来解决我的基本问题:
如何知道Archetype内容类型的属性名称.例如,在这种情况下,我需要知道新闻项的正文文本的属性名称.
如何将附加到新闻项目的图像转换为附加到灵巧内容类型的图像.
您可以使用Archetypes模式中的字段来检索值,在这种情况下最好是原始值.您传入对象然后调用.get()或.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)
Run Code Online (Sandbox Code Playgroud)ImageField.getRaw()调用返回的对象基本上是一个OFS.Image实例.您可以调用str()它来获取原始图像数据.
要设置图像对象,您确实希望从架构中获取图像字段并将其._type属性用作工厂:
project.image = IProjectInterface.image._type(str(image),
contentType=content_type, filename=filename)
Run Code Online (Sandbox Code Playgroud)
这里的内容类型是可选的; 在NamedImage和NamedBlobImage类型嗅出了内容类型自动过.
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |