我需要在django中动态添加表单文件作为模型实例

问题描述 投票:0回答:1

我正在尝试做这样的事情:

我的网页上有一个表单,并有一个“选择文件按钮”,因此您可以一次上传多个文件。我的问题是我需要“获取”那些文件并将它们中的每一个添加为模型实例,是否有可能?

django django-models django-forms python-3.6
1个回答
0
投票

django docs有一个很好的例子

forms.py

from django import forms

class FileFieldForm(forms.Form):
    file_field = forms.FileField(
        widget=forms.ClearableFileInput(
            attrs={'multiple': True}
        )
    )

views.py

from django.views.generic.edit import FormView
from .forms import FileFieldForm

class FileFieldView(FormView):
    form_class = FileFieldForm
    template_name = 'upload.html'  # Replace with your template.
    success_url = '...'  # Replace with your URL or reverse().

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        files = request.FILES.getlist('file_field')
        if form.is_valid():
        for f in files:
            ...  # Do something with each file.
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

就模型是动态的,将任意数量的文件添加到字段中,您可以查看在MySQL中使用JSONField或使用与PostGres非常相似的Hstore。基本上这些字段存储Json数据,您可以在使用该字段时对其进行解释。

© www.soinside.com 2019 - 2024. All rights reserved.