从Django Admin下载上传的文件

时间:2015-12-28 07:05:28

标签: django

我已经使用

在django admin中上传了一些文件
File = models.FileField(upload_to='./list/') 

现在我想下载我在类中编写以下函数的相同文件:

def file_link(self):
    request = None
    full_url = ''.join(['http://', get_current_site(request).domain, self.cvFile.url])
    if self.cvFile:
        return "<a href='%s'>download</a>" % (full_url)
    else:
        return "No attachment"

file_link.allow_tags = True

但是,当我点击该链接时,它会重定向到一个页面,并将链接附加到当前网址。由于网址不存在,因此显示错误。

2 个答案:

答案 0 :(得分:1)

你可以简单地做到这一点

Click to get the code

from django.contrib import admin
from app.models import *

class AppAdmin(admin.ModelAdmin):
    list_display = ('author','title','file_link')
    def file_link(self, obj):
        if obj.file:
            return "<a href='%s' download>Download</a>" % (obj.file.url,)
        else:
            return "No attachment"
    file_link.allow_tags = True
    file_link.short_description = 'File Download'

admin.site.register(AppModel , AppAdmin)

答案 1 :(得分:0)

href中需要绝对网址,而self.cvFile.url会返回相对网址。因此,除非您在主页上,否则该链接将简单地附加到您当前所在的任何网址上。只需将域网址添加到self.cvFile.url即可。