只有在模板中,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