I've got a field in my model of type FileField
. This gives me an object of type File
, which has the following method:
File.name
: The name of the file including the relative path fromMEDIA_ROOT
.
What I want is something like ".filename
" that will only give me the filename and not the path as well, something like:
{% for download in downloads %} <div class="download"> <div class="title">{{download.file.filename}}</div> </div> {% endfor %}
Which would give something like myfile.jpg
In your model definition:
import os class File(models.Model): file = models.FileField() ... def filename(self): return os.path.basename(self.file.name)
You can do this by creating a template filter:
In 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)
And then in your template:
{% load filename %} {# ... #} {% for download in downloads %} <div class="download"> <div class="title">{{download.file|filename}}</div> </div> {% endfor %}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With