我不熟悉mongoengine。我试图让pre_delete钩子删除存储在GridFS中的FileField。在
我使用的是python2.7.10、mongo3.4和mongoengine0.8.7。在
这是我所拥有的。在
import uuid
import mongoengine as me
class MyFiles(me.Document):
meta = {"collection": "test"}
guid = me.UUIDField(binary=False, required=True)
my_file = me.FileField()
@classmethod
def pre_delete(cls, sender, document, **kwargs):
document.my_file.delete()
if __name__ == '__main__':
me.connect(db='main', alias='default', host='localhost')
m = MyFiles(guid=uuid.uuid4())
m.my_file.new_file(content_type='text/plain')
m.my_file.write("This is")
m.my_file.write("my file")
m.my_file.write("Hooray!")
m.my_file.close()
m.save()
print(m.my_file.read())
m.delete()
现在我正在调试m.delete()上的断点
在我的.file.read()成功了。在
根据mongoengine docs for gridfs,我需要运行m.my_文件.删除()在删除MyFiles文档之前删除GridFS项。我已经确认了如果我把m.my_文件.删除()在m.delete()之前。在
^{pr2}$但是我希望它在pre_delete中运行。这似乎是pre_delete的目的。你知道我做错了什么吗?在
问题就在这里。我没有收到信号。这是有效的:
相关问题 更多 >
编程相关推荐