首页 > 解决方案 > 如何访问存储在 django 文件字段中的多个文件?

问题描述

我们可以在一个文件字段中保存多个文件,multiple在 HTML 输入标签中使用属性,在视图中使用request.FILES.getlist()for循环。
这可以正常工作,但问题是:
当我们在一个对象的一个​​文件字段中保存多个文件时,我们如何在模板中访问所有这些文件?我尝试了与下面的代码相同的方法,但它不起作用:

{% for foo in obj.filefield %}
    {{ foo }}
{% endfor %}

标签: djangodjango-templates

解决方案


不能将多个文件存储在同一个FileField[Django-doc]中。您只能存储一个文件。如果您需要存储多个文件,则制作一个额外的模型:

class MyModel(models.Model):
    # …
    pass

class MyModelFile(models.Model):
    my_model = models.ForeignKey(
        MyModel,
        related_name='files'
        on_delete=models.CASCADE
    )
    file = models.FileField()

因此,对于一个MyModel对象,您可以添加多个MyModelFiles,然后每个存储一个文件。

然后,您可以像这样渲染这些:

{% for file in obj.files.all %}
    {{ file.file }}
{ %endfor %}

推荐阅读