Py学习  »  问与答

[精华] post_delete,partial问题

lcqtdwj • 9 年前 • 2903 次点击  

上传的图片再删除对象后,django不会自动删除在media_root下的实际文件,所以用 post_delete.connect(delete_file,sender=ModelA) 但是我有2个模型都有imageField,并且他们的属性名不一样,所以我希望delete_file函数是通用的,接受一个指定属性名的参数,这样我就可以.

from functools import partial
post_delete.connect(partial(delete_file,'attr_name_A'),sender=ModelA)
post_delete.connect(partial(delete_file,'attr_name_B'),sender=ModelB)

def delete_file(attrname,sender,**kwargs):
    instance=kwargs['instance']
    os.remove(os.path.join(BASE_DIR,instance.getattr[attrname].path))

但是没有成功,没报任何异常错误,delete_file没有执行。请问哪里有问题么?或者应该怎样调试?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/795
 
2903 次点击  
文章 [ 1 ]  |  最新文章 9 年前
lcqtdwj
Reply   •   1 楼
lcqtdwj    9 年前

解决了,要weak=False参数,以免回调被gc