从 ForeignKey 模型下载 link

Download link from ForeignKey model

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

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,
        )

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

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

但是我看到href是空的,我无法下载附件。 if 条件工作正常,因为如果 post 没有附件,按钮不会出现。

将下载 link 放入我的下载按钮的正确方法是什么?

好的,你打错了:

替换attachment.get_absolute_url

blogpost.attachment.get_absolute_url

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

你的 url 应该是这样引用的:

<a href="{% url '<app_name>:<link_name>' blogpost.attachement.pk %}">Download</a>