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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要在django中动态添加表单文件作为模型实例相关的知识,希望对你有一定的参考价值。

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

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

答案

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数据,您可以在使用该字段时对其进行解释。

以上是关于我需要在django中动态添加表单文件作为模型实例的主要内容,如果未能解决你的问题,请参考以下文章

Django将硬编码的href链接添加到管理模型的表单视图页面

向复杂的 Django 视图添加值

使用 Django,如何在模板中动态设置 ModelForm 字段值?

Django:使用 Jquery 的动态表单集仅保存第一个表单集实例

Django:更新 X 数量模型的表单

Django:如何在 ajax 中返回模型表单集并在模板中使用