首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django删除FileField

Django删除FileField
EN

Stack Overflow用户
提问于 2013-04-16 23:37:26
回答 7查看 76.7K关注 0票数 116

我正在用Django构建一个web应用程序。我有一个上传文件的模型,但我不能删除该文件。下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
class Song(models.Model):
    name = models.CharField(blank=True, max_length=100)
    author = models.ForeignKey(User, to_field='id', related_name="id_user2")
    song = models.FileField(upload_to='/songs/')
    image = models.ImageField(upload_to='/pictures/', blank=True)
    date_upload = models.DateField(auto_now_add=True)

    def delete(self, *args, **kwargs):
        # You have to prepare what you need before delete the model
        storage, path = self.song.storage, self.song.path
        # Delete the model before the file
        super(Song, self).delete(*args, **kwargs)
        # Delete the file after the model
        storage.delete(path)

然后,在

我这样做:

代码语言:javascript
代码运行次数:0
运行
复制
song = Song.objects.get(pk=1)
song.delete()

它会从数据库中删除记录,但不会删除服务器上的文件。我还能尝试什么?

谢谢!

EN

Stack Overflow用户

发布于 2015-03-11 20:14:47

尝试django-清理,当您移除模型时,它会自动调用FileField上的delete方法。

代码语言:javascript
代码运行次数:0
运行
复制
pip install django-cleanup

settings.py

代码语言:javascript
代码运行次数:0
运行
复制
INSTALLED_APPS = (
     ...
    'django_cleanup', # should go after your apps
)
票数 92
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16041232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档