Загрузить несколько файлов с одного входа - PullRequest
0 голосов
/ 07 февраля 2020

Несколько файлов не сохраняются в админке, только первые сохраняются в админке. Класс Image (models.Model): imageuploader_profile = models.ForeignKey (settings.AUTH_USER_MODEL, on_delete = models.CASCADE, null = True, пусто = True) image = models.FileField (upload_to = 'pictsagram /') image_caption = models.CharField (max_length = 700)

def upload(request):
    form = PostForm(request.POST,request.FILES)
    if request.method == "POST":
        if form.is_valid():
            for f in request.FILES.getlist('image'):
                post = Image(image=f)
                post = form.save(commit=False)
                post.imageuploader_profile = request.user
                print(request.user)
                post.save()
                form.save()
                return redirect('/')
        else:
            form = PostForm()
    return render(request, 'upload.html', {"form": form})

class PostForm(forms.ModelForm):
    class Meta:
    model = Image
    fields = ('image_caption', 'image',)

<form action="{% url 'site:upload' %}" method="post" enctype="multipart/form-data">
{%csrf_token%}
<input type="file" name="file" multiple onchange="loadFile(event)" required="" id="id_file">
<button type="submit">Post</button>
</form>

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

используйте этот код: -----------------------------

 def upload(request):
        form = PostForm(request.POST,request.FILES)
        if request.method == "POST":
            if form.is_valid():
                for f in request.FILES.getlist('file'):
                    post = Image(image=f)
                    post = form.save(commit=False)
                    post.imageuploader_profile = request.user
                    print(request.user)
                    post.save()
                    form.save()
            return redirect('/')
            else:
                form = PostForm()
        return render(request, 'upload.html', {"form": form})

    class PostForm(forms.ModelForm):
        class Meta:
        model = Image
        fields = ('image_caption', 'image',)

    <form action="{% url 'site:upload' %}" method="post" enctype="multipart/form-data">
    {%csrf_token%}
    <input type="file" name="file" multiple onchange="loadFile(event)" required="" id="id_file">
    <button type="submit">Post</button>
    </form>
0 голосов
/ 07 февраля 2020

Похоже, ваша форма предназначена для объекта Image, но вы пытаетесь создать несколько изображений из одной отправки формы.

Вы создаете Image (), но это не похоже на вы прикрепляете это к форме. Поэтому вам, вероятно, потребуется реорганизовать представление примерно так:

def upload(request):
    if request.method == "POST":
        for image_file in request.FILES.getlist('image'):
            form = PostForm(request.POST, image_file)
            if form.is_valid():
                image = form.save(commit=False)
                image.imageuploader_profile = request.user
                image.save()
                form.save()
        return redirect('/')
    else:
        form = PostForm()
    return render(request, 'upload.html', {"form": form})

Кроме того, вырезание / вставка может испортить форматирование, но всегда дважды проверяйте отступ для предполагаемого потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...