gpt4 book ai didi

python - 如何通过 ZMI 在基于敏捷的内容类型上设置富文本字段?

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:58 25 4
gpt4 key购买 nike

我尝试在 ZMI 使用 Script (Python) 创建一个 collective.nitf.content 对象。

我用过的代码:

from Products.CMFCore.utils import getToolByName

news_folder = context.test_folder
wf = getToolByName(news_folder, "portal_workflow")
id="test_news"

news_folder.invokeFactory('collective.nitf.content', id)

n = news_folder[id]

n.setTitle('Test went OK')
n.setText('The test went OK.')
n.indexObject()
wf.doActionFor(n, "publish")

当我调用 n.setTitle() 时,对象创建正常,但是当我调用 n.setText() 时,抛出此错误:

Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module Shared.DC.Scripts.Bindings, line 322, in __call__
Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
Module Products.PythonScripts.PythonScript, line 344, in _exec
Module script, line 28, in mais_teste
- <PythonScript at /plone/news_folder/test_script>
- Line 28
AttributeError: setText

我做错了什么?我已经研究了好几天,但根本找不到这个问题的答案。

版本:

  • Plone 4.3.3 (4308)
  • CMF 2.2.7
  • Zope 2.13.22
  • Python 2.7.9(默认,4 月9 2015, 14:50:13) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)]
  • PIL 2.3.0(枕头)

最佳答案

collective.nitf是一个基于Dexterity的content type,所以这里不需要使用setter,直接赋值给field。

此外,请注意 text 是一个 RichText 字段;你应该使用 RichTextValue:

from plone.app.textfield.value import RichTextValue

n.text = RichTextValue(u'The body.', 'text/plain', 'text/html')

查看测试,特别是 test_catalog模块。

关于python - 如何通过 ZMI 在基于敏捷的内容类型上设置富文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31571895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com