Python Django不会用旧文件覆盖新上载的文件
每当上载新文件时,我都要覆盖/替换文件。目前,应用程序可以将文件上载到特定文件夹,但不会在上载新文件时覆盖文件。我需要帮助来解决这个问题 views.pyPython Django不会用旧文件覆盖新上载的文件,python,django,django-views,Python,Django,Django Views,每当上载新文件时,我都要覆盖/替换文件。目前,应用程序可以将文件上载到特定文件夹,但不会在上载新文件时覆盖文件。我需要帮助来解决这个问题 views.py def uploadfunc(request): if request.method=='POST': form =uploadfileform(request.POST,request.FILES) if form.is_valid(): form.save()
def uploadfunc(request):
if request.method=='POST':
form =uploadfileform(request.POST,request.FILES)
if form.is_valid():
form.save()
return render_to_response('upload_successful.html')
else:
form=uploadfileform()
return render(request, 'upload.html',{'form':form})
models.py
class uploadfolder(models.Model):
""" my application """
File_to_upload = models.FileField(upload_to='')
forms.py
class uploadfileform(forms.ModelForm):
class Meta:
model=uploadfolder
fields=('File_to_upload',)
您可以使用Django pre_save信号来实现这一点,如果存在,它将在保存之前删除该文件
from django.db.models.signals import pre_save
from django.dispatch import receiver
import os
#It will activate whenever you will save file in uploadfolder model
@receiver(pre_save, sender=uploadfolder)
def file_update(sender, **kwargs):
upload_folder_instance = kwargs['instance']
if upload_folder_instance.id:
path = upload_folder_instance.file_to_upload.path
os.remove(path)
希望能有所帮助。谢谢@vermanil my update models.py,这对我很有用
从django.db.models.signals导入预保存
从django.dispatch导入接收方
导入操作系统
类上载文件夹(models.Model):
“我的申请”
文件上传到=models.FileField(上传到=“”)
@接收方(预保存,发送方=上传文件夹)
def文件_更新(发送方,**kwargs):
上传文件夹实例=kwargs['instance']
如果将\u文件夹\u instance.File\u上载到\u upload:
path=上传文件夹实例文件到上传路径
os.remove(path)
您的项目中只需要上传一个文件吗?可能是重复的,请阅读一点