У меня есть следующая модель django:
RESOURCE_DIR = os.path.join(settings.MEDIA_ROOT, 'resources')
class Resource(models.Model):
title = models.CharField(max_length=255)
file_name = models.FilePathField(path=RESOURCE_DIR, recursive=True)
и я хочу указать URL-адрес файла в шаблоне, чтобы пользователь мог его просмотреть или загрузить.
Если я использую {{ resource.file_name }}
в шаблоне, он выводит полный путь к файлу на сервере, например, если RESOURCE_DIR='/home/foo/site_media/media'
, то выводится '/home/foo/site_media/media/pdf/file1.pdf'
, тогда как я хочу 'pdf/file1.pdf'
. В админке или в форме модели эта опция отображается как '/pdf/file1.pdf'
в виджете выбора. Так что, очевидно, можно делать то, что я прошу. Конечно, дополнительная косая черта не важна. Если бы я устанавливал recursive=False
, то я мог бы просто удалить часть пути до последнего слеша.
Как получить тот же результат, что и для модели или администратора?