我担心我可能会忽略一些非常明显的事情,但我会对任何建议表示感谢。我在Plone的Ploneformgen表单文件夹中有一个名为“settings”的纯文本文件。下面的代码成功地改变了这个文件中的文本,当我把它放在一个Python脚本中时,当在表单的某个字段中使用覆盖来查看表单时(例如字符串字段中的默认表达式)。
obj = context['settings']
obj.setText('Some text:2;More text:2')
obj.reindexObject()
我的问题是,我希望能够使用自定义脚本适配器或使用表单的After Validation Script覆盖调用的脚本来修改'settings'中的文本。这些工作都没有(并且在用于验证字段的各个字段中的覆盖似乎也不允许这样做。)
有什么理由说setText()在某些地方工作而在其他地方不工作(行obj = context['settings']
似乎没有问题)?我错过了什么?
据我所知,这不是权限问题,我有点困惑的是,如果在查看表单时调用该代码,则在提交表单时调用该代码时无效。< / p>
我可以创建一个新的文本文件并使用以这些方式调用的脚本向其添加文本没问题:在现有文件上调用setText()
似乎是一个特定的问题。
答案 0 :(得分:1)
解决方案是在调用setText()
时明确设置mimetype:
obj.setText("Some text", mimetype='text/plain')
或
obj.setText("Some text", mimetype='text/html')
酌情。我不知道为什么会这样,但确实如此。