如何使用ignoreContext = True在更新方法中设置Plone自动表单的值

tou*_*tpt 4 zope plone

我正在尝试制作一个在上下文之外存储值的表单。存储已完成并且运行良好,但现在我希望更新方法在渲染过程中填充表单。所以我以这种方式重写 Form 类的更新方法:

def update(self):
    super(ConfigurationForm,self).update()
    form = self.request.form
    if not form:
        #We are on a rendering process
        provider = self.getProvider()
        settings = provider.get()
        #TODO: update widget values !?
Run Code Online (Sandbox Code Playgroud)

settings 是一个字典,其中键等于接口字段的名称。

所以我尝试了很多方法来更新小部件值:

  • 使用 dataconverter (太复杂,不知道这是否是唯一的方法
  • 更新 self.request.form 字典并再次调用 update 方法
  • 玩弄现场物体

实现这一目标的好方法是什么?(支持所有领域?)

opt*_*ude 5

不要执行ignoreContext。重写 getContent() 以返回一个字典。该字典将用作伪上下文。