0

我想在我博客的每篇文章上创建一个附件。然后我这样做了:

class FileUpload(models.Model):
    name = models.Charfield(max_length=70)
    file = models.FileField()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("single_file", kwargs={"pk": self.pk})


class BlogPost(models.Model):
    title = models.Charfield(max_length=70)
    .
    .
    .
    attachment = models.ForeignKey(
        FileUpload, 
        on_delete=models.CASCADE, 
        related_name="related_attachment", 
        null=True,
        blank=True,
        )

在单个帖子的模板中,我放了这个:

  {% if blogpost.attachment %}
  <hr>
  <div>
    <a class="btn btn-info" href="{{ attachment.get_absolute_url }}" rule="button">
        Download
    </a>
  </div>
  {% endif %}

但是我看到那个href是空的,我不能下载附件。if 条件可以正常工作,因为如果帖子没有附件,按钮不会出现。

在我的下载按钮中放置下载链接的正确方法是什么?

4

2 回答 2

2

好的,你有一个错字:

代替attachment.get_absolute_url

blogpost.attachment.get_absolute_url

于 2019-08-16T07:23:50.150 回答
0

嗯,有几件事。首先,从您从视图if传入的语句blogpost看来,这意味着您需要引用blogpost.attachment.

无论如何,您的网址可能应该像这样引用:

<a href="{% url '<app_name>:<link_name>' blogpost.attachement.pk %}">Download</a>
于 2019-08-16T07:26:33.203 回答