Django在保存新文件之前/之后删除旧文件和新文件
Posted
技术标签:
【中文标题】Django在保存新文件之前/之后删除旧文件和新文件【英文标题】:Django delete old and new file before/after save new 【发布时间】:2017-06-05 15:04:17 【问题描述】:我在 django 视图中的代码:
file_obj = MyFile.objects.get(id=5)
old_preview = file_obj.preview_path
form = FilePreviewForm(request.POST, request.FILES, instance=file_obj)
if form.is_valid():
print old_preview # /upload/files/hahaha.jpg
print file_obj.preview_path # ololo.jpg
# you can see different objects - it's good!
old_preview.delete() # I want delete only /upload/files/hahaha.jpg - old file
print old_preview #
print file_obj.preview_path #
# you can see all files are deleted!!! it's so bad!!!
为什么会这样?
如果我在保存后删除旧文件,它会是一样的。我查过了!
更新: http://pastebin.com/vB0SRzze - 这是错误的
UPD2: http://pastebin.com/bLNKbkLt
【问题讨论】:
请提供更多上下文?preview_path
是什么类型? FilePreviewForm
是做什么的?
无关:form.is_valid
是一个函数,所以应该是form.is_valid()
pastebin.com/vB0SRzze
pastebin.com/bLNKbkLt - 关于 preview_path 和 FilePreviewForm
@yedpodtrzitko 纠正这个,谢谢
【参考方案1】:
您没有保存表单,请先尝试这样做:
if form.is_valid():
form.save()
成功了吗?阅读here
【讨论】:
表单保存,但 preview_path 为空 @Saksow 它改变了什么吗?你能发布新的输出吗? 但我说:try doing this FIRST
打印前必须保存,这是了解发生了什么的唯一方法以上是关于Django在保存新文件之前/之后删除旧文件和新文件的主要内容,如果未能解决你的问题,请参考以下文章
保存文件名.m 删除了我原来的文件名.m 文件并用新文件替换它。怎么找回旧的?