我想使用表单上传多个图像文件,然后将图像保存在./static/
中,然后将图像的路径保存到数据库,当我使用request.FIELS.getlist("files")
时,使用save()
,数据库中只保存了一个图像的名称,并且真实图像未保存在./static/
models.py
class User(models.Model):
username = models.CharField(max_length=200)
headImg = models.FileField(upload_to='./upload/')
is_excuted = models.BooleanField(default=False)
time = models.DateField(default=timezone.now)
score = models.DecimalField(max_digits=2, decimal_places=2, default=0.00)
view.py
class UserForm(forms.Form):
username = forms.CharField()
def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
username = uf.cleaned_data['username']
for f in request.FILES.getlist("files"):
user = User()
user.username = username
user.headImg = f.name
user.save()
return HttpResponse('upload ok!')
else:
uf = UserForm()
return render_to_response('register.html',{'uf':uf})
答案 0 :(得分:0)
您可以使用git中的django-multiupload复制示例。
# forms.py
from django import forms
from multiupload.fields import MultiFileField
class UploadForm(forms.Form):
attachments = MultiFileField(min_num=1, max_num=3, max_file_size=1024*1024*5)
# If you need to upload media files, you can use this:
attachments = MultiMediaField(
min_num=1,
max_num=3,
max_file_size=1024*1024*5,
media_type='video' # 'audio', 'video' or 'image'
)
# For images (requires Pillow for validation):
attachments = MultiImageField(min_num=1, max_num=3, max_file_size=1024*1024*5)
# models.py
from django.db import models
class Attachment(models.Model):
file = models.FileField(upload_to='attachments')
# views.py
from django.views.generic.edit import FormView
from .forms import UploadForm
from .models import Attachment
class UploadView(FormView):
template_name = 'form.html'
form_class = UploadForm
success_url = '/done/'
def form_valid(self, form):
for each in form.cleaned_data['attachments']:
Attachment.objects.create(file=each)
return super(UploadView, self).form_valid(form)