Plone 将原型新闻项迁移到灵巧内容类型

Plone 将原型新闻项迁移到灵巧内容类型,plone,dexterity,archetypes,Plone,Dexterity,Archetypes,我正在尝试将新闻项目中的内容复制到我编写的其他内容类型。在我的脚本中,我有新闻项和项目项。第二个项目是使用敏捷性定义的内容类型。如果我能用下一种方式将图片和正文从新闻复制到项目,那就太好了 project.text=news.text project.image=news.image 其中,文本和图像在项目中定义为RichText和NamedBlobImage。我不知道这些属性在新闻条目中是怎样的。我只知道我可以使用方法getImage()获取新闻项中的图像,但将其分配给项目会在渲染项目时产生

我正在尝试将新闻项目中的内容复制到我编写的其他内容类型。在我的脚本中,我有
新闻
项和
项目
项。第二个项目是使用敏捷性定义的内容类型。如果我能用下一种方式将图片和正文从
新闻
复制到
项目
,那就太好了

project.text=news.text
project.image=news.image
其中,文本和图像在
项目中定义为RichText和NamedBlobImage。我不知道这些属性在新闻条目中是怎样的。我只知道我可以使用方法
getImage()
获取新闻项中的图像,但将其分配给项目会在渲染项目时产生错误

所以我需要一些建议来解决我的基本问题:

  • 如何知道原型内容类型的属性名称。例如,在本例中,我需要知道新闻项正文文本的属性名称

  • 如何将附加到新闻项的图像转换为附加到灵巧内容类型的图像

  • 您可以使用Archetypes模式中的字段来检索值,在本例中最好是原始值。传入对象,然后调用
    .get()
    .getRaw()

  • 调用
    ImageField.getRaw()
    返回的对象基本上是一个
    OFS.Image
    实例。您可以对其调用
    str()
    ,以获取原始图像数据

    要设置图像对象,您确实需要从模式中获取图像字段,并将其
    \u type
    属性用作工厂:

    project.image = IProjectInterface.image._type(str(image),
        contentType=content_type, filename=filename)
    
    这里的内容类型是可选的;
    NamedImage
    NamedBlobImage
    类型也会自动嗅出内容类型


  • 潮湿的天气,玛蒂恩!
    project.image = IProjectInterface.image._type(str(image),
        contentType=content_type, filename=filename)