Django 數據庫刪除或修改記錄同時刪除media下存儲文件


新的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)
 
#需要注意的一點是刪除文件要在刪除或修改記錄之前進行
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM