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

Как я могу отправить 3 изображения одновременно с одним входом.

class Image(models.Model):
imageuploader_profile = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, null=True, blank=True)
image = models.FileField(upload_to ='pictsagram/') 

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Я не думаю, что это слишком сложно. Вам просто нужна форма с файловым вводом, имеющим множественный атрибут, и затем сохраните все файлы в вашем представлении.

Например, очень базовый c пример

#forms.py

class ImageForm(forms.Form):

    images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))

Ваш html форма

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form }}
    <button type="submit">Upload</button>
</form>

А затем создайте изображения в своем представлении, используя getlist в поле

    # views.py
    def images_upload(request):

        if request.method == 'POST':
            form = ImageForm(request.POST, request.FILES)
            if form.is_valid():
                for img in request.FILES.getlist('images'):
                    Image.objects.create(imageuploader_profile=request.user, image=img)
                return redirect('images_upload')

        form = ImageForm()

        context = {'form': form}

        return render(request, 'images.html', context)
0 голосов
/ 07 февраля 2020

Итак, я думаю, что это тот случай, когда вам нужно использовать поле отношения ManyToMany, создав новый экземпляр model, в котором хранится одно изображение, например ((и это упрощенная версия c). что-то вроде того, что вам нужно).

from django.db import models

class ImageAttachment(models.Model):
    file = models.FileField(upload_to ='pictsagram/')

Затем в вашей модели изображения:

class Image(models.Model):
    imageuploader_profile = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, null=True, blank=True)
    images = models.ManyToManyField(ImageAttachment)

Затем пользователь передаст X количество изображений на сервер, на котором Укажите, что вы создадите несколько изображений и добавите их в поле изображений для модели Image.

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

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