我已经使用
在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
但是,当我点击该链接时,它会重定向到一个页面,并将链接附加到当前网址。由于网址不存在,因此显示错误。
答案 0 :(得分:1)
你可以简单地做到这一点
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
即可。