我在Plone中有一个AT内容类型。它有许多字段,包括文件字段。当用户编辑此类型的对象时,如何判断是否上传了新文件?
就此而言,如何判断是否有任何字段被更改?
我目前正在使用订阅者挂钩到IObjectEditedEvent来在对象更改后做一些事情 - 我可以在这里做这些事吗?
答案 0 :(得分:1)
是的,当更改Archetypes内容对象时,会发出IObjectEditedEvent
(IObjectModifiedEvent
的直接子类)。
但是,事件本身不会告诉您是否上传了新文件。但是,应该可以获取请求(例如,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']
可以有什么。这似乎很有用。