我想到了。我只是将其放在该Widget模型上:
def delete(self):
files = WidgetFile.objects.filter(widget=self)
if files:
for file in files:
file.delete()
super(Widget, self).delete()
这触发了每个相关对象上必要的delete()方法,从而触发了我的自定义文件删除代码。是的,数据库的开销更大,但是,无论如何,如果您试图删除硬盘上的文件,那么多次访问数据库并不是很大的花费。