首页 > 解决方案 > 尝试上传多张图片,但只保存了 1 张

问题描述

我试图允许用户上传多张图片,但只有一张图片保存到数据库中。这是我的模特

from django.db import models
from django.contrib.auth.models import User


class File(models.Model):
    files = models.FileField(upload_to='images/')
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='files')

接下来,上传的表单如下所示:

from django import forms
from .models import File


class FileForm(forms.ModelForm):

    class Meta:
        model=File
        fields=('files',)
        widgets={'files':forms.FileInput(attrs={'id':'files','required':True,'multiple':True})}

最后,“上传图片”视图如下:

def upload_pics(request, user_id):
    if request.method == "POST":
    form = FileForm(request.POST, request.FILES)
    files = request.FILES.getlist('file_field')
    if form.is_valid():
        pics = form.save(commit=False)
        pics.user = request.user
        pics.files = request.FILES[files]
        return redirect("groups:index")

else:
    form = FileForm()
    render(request, 'accounts/account_form.html', {'form':form})
return render(request, 'accounts/account_form.html', {'form':form})

问题是只保存了一张图片。非常感谢任何帮助!

标签: djangodjango-modelsdjango-formsdjango-views

解决方案


您的代码看起来不错,但您正在寻找的似乎是 Django Formsets。它将允许您一次上传多个图像。也看看这个问题的答案:how to upload multiple images to a blog post in django


推荐阅读