当我删除模型时,我试图让Django 1.9版删除模型中与FileField相对应的文件。我的第一次尝试基于delete signals as explained in another answer,但这似乎不适用于Django 1.8及其后续版本。另一个答案指向我Django-cleanup的方向,但它对我也不起作用(可能是它在内部使用相同的方法吗?)。我也试过post delete signal approach explained here,但方法从未触发过。那么这样做的新方法是什么,删除模型时删除文件的任何方法都适合我。
答案 0 :(得分:1)
我在视图中使用了以下解决方法:
@login_required
def deleteDataset(request, pk):
instance = DatasetModel.objects.defer('filecontent').get(pk=pk)
if request.method == 'POST':
path = instance.filecontent.path
instance.delete()
if os.path.isfile(path):
os.remove(path)
return redirect(main)
else:
return redirect(main)
但我仍然希望找到更好的解决方案,因为我希望尽可能缩短视图