15

私のdjangoモデルにFileFieldがあります:

file = models.FileField(upload_to=FOLDER_FILES_PATH)

このモデルを変更するための Django 管理セクションには、このファイルへのフルパスがあります (デフォルト):

Currently: /home/skyfox/Projects/fast_on_line/order_processor/orders_files/mydog2_2.jpg 

管理パネルのユーザーにこのファイルをダウンロードするためのリンクを表示するにはどうすればよいですか?

4

3 に答える 3

25

たとえば、モデル「ケース」がある場合、アップロードされたファイルへのリンクを「作成」するメソッドをクラスに追加できます。

class Case(models.Model)
    ...
    file = models.FileField(upload_to=FOLDER_FILES_PATH)
    ...

    def file_link(self):
        if self.file:
            return "<a href='%s'>download</a>" % (self.file.url,)
        else:
            return "No attachment"

    file_link.allow_tags = True

次に、admin.py で

list_display = [..., file_link, ...]
于 2011-11-14T08:08:14.867 に答える
2

注: このソリューションは、開発での使用にのみ適しています。

urls.py別の解決策は、ファイルに次を追加するだけです。

from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

これにより、管理/change/ページで提供されるデフォルトのリンクがダウンロード用のファイルを提供できるようになります。

ドキュメントはこちら

これらのファイルを本番環境で提供する方法については、こちらのドキュメントを参照してください。

于 2018-05-31T04:31:20.397 に答える