如何从文件字段中获取文件的名称?

时间:2017-04-13 08:32:40

标签: python django file upload filefield

我知道很多次都会问这个问题,但我无法找到一个很好的解决方案。这是我的模特:

class Song(models.Model):
    song_title = models.CharField(max_length=200, null=False, blank=False)
    audio_file = models.FileField(default='', null=True,blank=True)
    @property
    def filename(self):
        return os.path.basename(self.audio_file.name)
    def __str__(self):
        return self.song_title

我已经完成了所有这些,但我仍然无法获取文件名。所以在管理页面中,我上传了一首名为song.mp3的新歌。在管理面板中,它显示如下:

Currently: ./song.mp3

我需要获得名称song.mp3,我该怎么办?我尝试在python shell中执行此操作:

d = Song.object.get(pk=1)
d.audio_file.name

但它只显示了这个:''

1 个答案:

答案 0 :(得分:1)

我认为你应该使用下一步:

@property
def filename(self):
    return self.audio_file.path # os.path.basename(self.audio_file.path)

self.audio_file.path代替self.audio_file.name

了解有关管理文件Django managing files的更多信息,它将在未来为您提供帮助;)