我在 Plone 中有一个 AT 内容类型。它有许多字段,包括一个文件字段。当用户编辑此类型的对象时,如何判断是否上传了新文件?
就此而言,我如何判断是否有任何字段已更改?
我目前正在使用订阅者连接到 IObjectEditedEvent 以在对象更改后做一些事情 - 我可以在这里做这些事情吗?
我在 Plone 中有一个 AT 内容类型。它有许多字段,包括一个文件字段。当用户编辑此类型的对象时,如何判断是否上传了新文件?
就此而言,我如何判断是否有任何字段已更改?
我目前正在使用订阅者连接到 IObjectEditedEvent 以在对象更改后做一些事情 - 我可以在这里做这些事情吗?
是的,在更改 Archetypes 内容对象时会发出IObjectEditedEvent
(的直接子类)。IObjectModifiedEvent
但是,事件本身不会告诉您是否上传了新文件。但是,应该可以获取请求(例如,context.REQUEST 应该通过获取为您提供当前请求)并查看是否存在与该字段匹配的文件对象。如果是这样,则用户为该字段上传了一个新文件,并且该文件FileField
已更新。
这是我绑定到 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']
可以有什么。似乎很有用。