当我在 Admin 中删除 objects 时,如何自动删除 Django 媒体文件中的图像?
How do I automatically delete images in Django media file when I delete the objects in Admin?
请帮忙!
我正在使用 Django 3 并且有一个基本的博客,每个条目都有标题、描述和图像。
在 Django 管理中,我可以删除每个博客 post 但是,当我在 Atom 中查看我的媒体文件时,所有图像仍然存在,我必须手动删除它们...
当我在管理员中删除它们时,如何让它们自动删除?
Model.py
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
image = models.ImageField(upload_to='images/', default='images/road.jpg')
last_modified = models.DateField(auto_now=True)
Views.py
from django.shortcuts import render
from .models import Blog
def home (request):
blogs = Blog.objects.all()
return render (request,'blog/home.html', {'blogs':blogs})
你可以这样使用:
blog = Blog.objects.get(pk=1)
if blog.image:
if os.path.isfile(blog.image.path):
os.remove(blog.image.path)
或者你可以使用 signlas:
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
@receiver(pre_delete, sender=Blog)
def mymodel_delete(sender, instance, **kwargs):
# Pass false so FileField doesn't save the model.
instance.file.delete(False)
使用 django-cleanup 应用程序在您删除对象时自动删除媒体。
请帮忙! 我正在使用 Django 3 并且有一个基本的博客,每个条目都有标题、描述和图像。 在 Django 管理中,我可以删除每个博客 post 但是,当我在 Atom 中查看我的媒体文件时,所有图像仍然存在,我必须手动删除它们...
当我在管理员中删除它们时,如何让它们自动删除?
Model.py
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
image = models.ImageField(upload_to='images/', default='images/road.jpg')
last_modified = models.DateField(auto_now=True)
Views.py
from django.shortcuts import render
from .models import Blog
def home (request):
blogs = Blog.objects.all()
return render (request,'blog/home.html', {'blogs':blogs})
你可以这样使用:
blog = Blog.objects.get(pk=1)
if blog.image:
if os.path.isfile(blog.image.path):
os.remove(blog.image.path)
或者你可以使用 signlas:
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
@receiver(pre_delete, sender=Blog)
def mymodel_delete(sender, instance, **kwargs):
# Pass false so FileField doesn't save the model.
instance.file.delete(False)
使用 django-cleanup 应用程序在您删除对象时自动删除媒体。