Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django不会用旧文件覆盖新上载的文件_Python_Django_Django Views - Fatal编程技术网

Python Django不会用旧文件覆盖新上载的文件

Python 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()

每当上载新文件时,我都要覆盖/替换文件。目前,应用程序可以将文件上载到特定文件夹,但不会在上载新文件时覆盖文件。我需要帮助来解决这个问题

views.py

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)
您的项目中只需要上传一个文件吗?可能是重复的,请阅读一点