2

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

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

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

4

2 回答 2

1

是的,在更改 Archetypes 内容对象时会发出IObjectEditedEvent(的直接子类)。IObjectModifiedEvent

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

于 2009-12-29T22:05:51.413 回答
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']可以有什么。似乎很有用。

于 2013-09-10T22:15:43.347 回答