新的django版本移除了在刪除或修改模型的時候自動刪除對應的文件的功能,也是出於安全考慮,畢竟存儲有價數據無價,可以通過限制上傳文件大小來盡可能控制存儲,不過當某些文件沒有必要重復存儲時就需要刪除它來釋放空間。
models.py
#引入包
from django.db.models.signals import pre_delete #刪除文件
from django.dispatch.dispatcher import receiver #刪除文件
class
download(models.Model): #存儲文件的class
.............
file = models.FileField(verbose_name=u'文件',upload_to='file',null=True, blank=True,max_length=100) #可以是FileField、ImageField 親測都有效
..............
#刪除文件函數
@receiver(pre_delete, sender=
download) #sender=你要刪除或修改文件字段所在的類**
def download_delete(instance, **kwargs): #函數名隨意
print('進入文件刪除方法,刪的是',instance.
file) #用於測試
instance.
file.delete(False) #file是保存文件或圖片的字段名**
views.py
#引入
from app名字.models import download_delete #刪除文件
需要的地方調用
instance = download.objects.get(id = 1)
download_delete(instance)
#需要注意的一點是刪除文件要在刪除或修改記錄之前進行