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

How to get the name of the file from the 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

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

Currently: ./song.mp3

我需要获取名称 song.mp3 ,我该怎么做?我尝试在 python shell:

中这样做
d = Song.object.get(pk=1)
d.audio_file.name

但它只显示了这个:''

我认为你应该使用接下来的东西:

@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这将在未来对您有所帮助;)