0

I am trying to allow user to upload several pictures, but only one picture is saving to the database. This is my Model

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')

next, the form for the upload looks like this:

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})}

finally, the view 'upload pics' is the following:

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})

the problem is that only 1 picture is being saved. any help is really appreciated!

Nader
  • 67
  • 9

1 Answers1

0

Your code looks fine, but it seems like what you are looking for is Django Formsets. It will allow you to upload multiple images at once. Also take a look at the answer to this question: how to upload multiple images to a blog post in django

Daniel Holmes
  • 1,952
  • 2
  • 17
  • 28