Python 当您有一个带有文件字段的模型对象时,请在模板中下载链接

Python 当您有一个带有文件字段的模型对象时,请在模板中下载链接,python,django,django-templates,Python,Django,Django Templates,当您有一个模型对象可用时,是否可以在html模板中创建一个下载链接,如下所示 models.py class Barcard(models.Model): name = models.CharField(max_length=30) drinks = models.ManyToManyField(Drink) barcardFile = models.FileField(blank=True, upload_to='barcard') mixingFile =

当您有一个模型对象可用时,是否可以在html模板中创建一个下载链接,如下所示

models.py

class Barcard(models.Model):
    name = models.CharField(max_length=30)
    drinks = models.ManyToManyField(Drink)
    barcardFile = models.FileField(blank=True, upload_to='barcard') 
    mixingFile = models.FileField(blank=True, upload_to='mixing') 
views.py

def download(request, barcard_id):
    if request.method == 'GET':
        barcard = get_object_or_404(Barcard, pk=barcard_id)
        return render(request, 'drinks/download.html', {'barcard':barcard})
    else:
        return HttpResponseRedirect('/drinks/')
模板/饮料/下载.html

{% extends "drinks/base.html" %}
{% block fulltitle %}Drinks{% endblock %}
{% block content %}
    <h1>{{ barcard.name }}</h1>
    <p> Download barkort her: <a href='{{ MEDIA_URL }}{{ barcard.barcardFile.relative_path }}'>{{barcard.name}} barkort</a> </p>
    <p> Download blandekort her: <a href='{{ MEDIA_URL }}{{ barcard.mixingFile.relative_path }}'>{{barcard.name}} blandekort</a></p>
{% endblock %}
{%extends“drinks/base.html”%}
{%block fulltitle%}饮料{%endblock%}
{%block content%}
{{barcard.name}
下载barkort her:

下载blandekort-her:

{%endblock%}

现在我没有得到一个文件,当点击链接。我是错过了什么,还是不得不做一些完全不同的事情

是什么让你认为存在一个
相对路径
属性?您需要使用
url
属性,该属性包括媒体url前缀

<a href='{{ barcard.barcardFile.url }}'>

这很有效,谢谢。关于
relative\u path
属性,我正在查看其他人的代码,但无法使其正常工作。没有注意到他们定义了一个函数
相对路径(self)
。这个解决方案更符合我的要求