如何判断某个字段是否在plone中的AT对象中更改了值?

时间:2009-12-28 07:16:13

标签: python plone zope archetypes

我在Plone中有一个AT内容类型。它有许多字段,包括文件字段。当用户编辑此类型的对象时,如何判断是否上传了新文件?

就此而言,如何判断是否有任何字段被更改?

我目前正在使用订阅者挂钩到IObjectEditedEvent来在对象更改后做一些事情 - 我可以在这里做这些事吗?

2 个答案:

答案 0 :(得分:1)

是的,当更改Archetypes内容对象时,会发出IObjectEditedEventIObjectModifiedEvent的直接子类)。

但是,事件本身不会告诉您是否上传了新文件。但是,应该可以获取请求(例如,context.REQUEST应该通过获取为您提供当前请求)并查看是否存在与该字段匹配的文件对象。如果是,则用户上传该字段的新文件,FileField将更新。

答案 1 :(得分:0)

以下是我与IObjectEditedEvent相关的内容:

使用从子类化ATBlob创建的默认表单, 实施(IATBlobFile,IATFile,IFileContent)

def editObjectEvent(context, event):
    status = context.REQUEST.form.get('file_delete')
    if status in ("nochange", NONE):
        print "Don't do anything, no change to file."
    else:
        print "Do something, the file has changed"

我想知道其他值form['file_delete']可以有什么。这似乎很有用。