只有在模板中,Django文件域返回文件名

我在我的模型FileField中有一个字段。 这给了我一个types为File的对象,它具有以下方法:

File.name:文件的名称,包括MEDIA_ROOT的相对path。

我想要的是像.filename这样只会给我的文件名,而不是path

就像是:

{% for download in downloads %} <div class="download"> <div class="title">{{download.file.filename}}</div> </div> {% endfor %} 

这会给像myfile.jpg这样的东西

谢谢

在你的模型定义中:

 import os class File(models.Model): file = models.FileField() ... def filename(self): return os.path.basename(self.file.name) 

你可以通过创build一个模板filter

myapp/templatetags/filename.py

 import os from django import template register = template.Library() @register.filter def filename(value): return os.path.basename(value.file.name) 

然后在你的模板中:

 {% load filename %} {# ... #} {% for download in downloads %} <div class="download"> <div class="title">{{download.file|filename}}</div> </div> {% endfor %} 

您可以使用name属性从文件字段对象中访问文件名。

 class CsvJob(Models.model): file = models.FileField() 

那么你可以使用特定的对象文件名。

 obj = CsvJob.objects.get() obj.file.name property