1

ファイルフィールドに関連付けられたファイルを削除したいのですが、うまくいきません。

修正していただけますか?

モデル.py

class Picture(models.Model):

    file = models.FileField(upload_to="pictures")
    slug = models.SlugField(max_length=50, blank=True)

    def __unicode__(self):
        return self.file

    def getFileName(self):
        return self.docfile.name

Views.py

def delete(self, request, *args, **kwargs):
    """
    This does not actually delete the file, only the database record.
    """
    self.object = self.get_object()
    path = "/media/pictures" + '/' + self.object.name
    #path = MEDIA_ROOT + '/' + self.object.name
    #path = MEDIA_ROOT + '/' + self.object.getFileName()
    self.object.delete()
    os.remove(path)
4

1 に答える 1

3

FileFieldAPIを使用してファイル オブジェクトを削除できます。

Picture.objects.get(...).file.delete()

これにより、ストレージAPI を使用してファイルが削除されます。その利点は、ストレージを Amazon S3 などの別のシステムに切り替えたい場合でも、このアプローチが機能することです。

于 2012-10-28T19:11:17.113 に答える