Djang中未调用自定义存储delete()方法

2024-10-03 13:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字段继承自ImageField,其自定义存储如下:

image = PicasaImageField(upload_to=get_upload_to, blank=True, storage=pwcs())

删除带有此字段的对象时(使用对象.删除(),而不是大容量),则不会调用自定义存储的delete方法。在尝试调试时,我找不到Django正在通过对象的字段删除文件或实际存储中的任何内容。或者,我应该手动/在钩子中删除文件/在最终模型中写入一个自定义的delete()方法,该方法将在实际对象上调用后台delete()?我找不到标准ImageFile+默认文件系统是如何处理这一问题的,但我会假设常规文件会被删除。还是我搞错了?在

谢谢你的任何见解。在

伊戈尔


Tags: 文件to对象方法imagetruegetstorage
1条回答
网友
1楼 · 发布于 2024-10-03 13:24:43

Django 1.3 release notes

when a model is deleted the FileField's delete() method won't be called. If you need cleanup of orphaned files, you'll need to handle it yourself

正如您建议的那样,您可以使用自定义删除方法来处理此问题:

def delete(self, *args, **kwargs):
    image.delete(save=False)
    super(Foo, self).delete(*args, **kwargs)

或者使用即使在对象.删除()未调用:

^{pr2}$

相关问题 更多 >