我需要在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,如何在模板中动态设置 ModelForm 字段值?