92

タイプのモデルにフィールドがありますFileFieldFileこれにより、次のメソッドを持つタイプのオブジェクトが得られます。

File.name:からの相対パスを含むファイルの名前 MEDIA_ROOT

私が欲しいのは「.filename」のようなもので、ファイル名だけが表示され、パスも表示されません。次のようになります。

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

これは次のようなものになりますmyfile.jpg

4

4 に答える 4

194

モデル定義:

import os

class File(models.Model):
    file = models.FileField()
    ...

    def filename(self):
        return os.path.basename(self.file.name)
于 2010-04-21T14:31:55.643 に答える
58

これを行うには、テンプレートフィルターを作成します。

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 %}
于 2010-10-28T19:29:33.723 に答える
1

テンプレートで「カット」を使用することもできます

{% for download in downloads %}
  <div class="download">
    <div class="title">{{download.file.filename|cut:'remove/trailing/dirs/'}}</div>
  </div>
{% endfor %}
于 2021-12-09T18:50:45.003 に答える
-2

nameプロパティを使用して、ファイルフィールドオブジェクトからファイル名にアクセスできます。

class CsvJob(Models.model):

    file = models.FileField()

次に、を使用して特定のオブジェクトのファイル名を取得できます。

obj = CsvJob.objects.get()
obj.file.name property
于 2016-09-16T09:00:27.320 に答える