更新视图文件字段不删除以前的文件 Django python



我有:

class UserUpdateView(UpdateView):
fields = ("file_one", "file_two")
model = User

它有效...但并非总是如此,我放入另一个文件,路径会发生变化,但是当我在另一个 def 中处理文件时,它会保留以前的文件值,我开始知道,因为我检查了我的媒体文件夹以查看它是否存在并且它在相应的文件夹中,但也在我测试和读取的所有其他文件中。我不得不手动删除它们,只有它需要我的新文件。

如何删除以前的文件?或者我需要执行以下操作:

def Inputfiles(request):
form = UploadFilesForm(request.POST, request.FILES, instance=request.user)
if request.method == "POST":
if form.is_valid():
form.save()
return redirect('index')
else:
form = UploadFilesForm()
return render(request, 'registration/File_Upload.html', {'form': form})
else:
return render(request, 'registration/File_Upload.html', {'form': form})

我唯一想不到做的就是添加一个

request.user.file_one.delete() from [documentation delete()][1] 

但我不知道在哪里放吸线,如果它甚至有效。

models.py

class User(AbstractUser):
email = models.EmailField(unique=True)
file_one = models.FileField(upload_to='csvfiles', validators=[FileExtensionValidator(allowed_extensions=['csv'])])
file_two = models.FileField(upload_to='csvfiles', validators=[FileExtensionValidator(allowed_extensions=['csv'])])

您可以像这样覆盖模型的save()以在更新期间删除旧文件:

class User(AbstractUser):
...
def save(self, *args, **kwargs):
if self.pk:
this_record = User.objects.get(pk=self.pk)
if this_record.file_one != self.file_one
this_record.file_one.delete(save=False)
super(User, self).save(*args, **kwargs)

最新更新