Как добавить несколько фото в форме Django?

Мне нужно добавить возможность загрузить несколько фотографий к объявлению. Я должен был получить форму, где после загрузки изображения, сразу появляется возможность загрузить ещё одно. По итогу я получаю форму, где я могу загрузить только одно фото, также форма считается невалидной из-за поля с фотографиями.

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

Буду очень благодарен за любую помощь

models.py

class HelpAnnouncement(models.Model):
    url = models.SlugField(max_length=200, unique=True, auto_created=True)
    title = models.CharField(max_length=100)
    description = models.TextField(max_length=2000)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)
    category = models.ForeignKey(CallBoardCategory, on_delete=models.CASCADE)
    status = models.BooleanField(default=False)

class AdvertisementImages(models.Model):
    image = models.ImageField("images", upload_to="peopleHelp_images/")
    advertisement = models.ForeignKey(HelpAnnouncement, on_delete=models.CASCADE, related_name='images')

forms.py

from django import forms
from django.forms import widgets

from .models import CallBoardCategory, HelpAnnouncement, AdvertisementImages


class CallCreateForm(forms.ModelForm):
    images = forms.ImageField(widget=forms.ClearableFileInput(attrs={'multiple': True}), required=True)

    class Meta:
        model = HelpAnnouncement
        fields = ('title', 'description', 'category')


class CallImagesForm(forms.ModelForm):
    class Meta:
        model = AdvertisementImages
        photos = forms.ImageField(widget=widgets.FileInput(attrs={'multiple': True}))
        fields = ('image',)

    def __init__(self, *args, **kwargs):
        if 'request' in kwargs:
            self.request = kwargs.pop('request')
        super(CallImagesForm, self).__init__(*args, **kwargs)

views.py

@login_required
def create(request):
    if request.method == 'POST':
        form = CallCreateForm(request.POST)
        form_images = CallImagesForm(request.POST, request.FILES, request=request)

        if form.is_valid() and form_images.is_valid():
            form.instance.author = request.user
            form.instance.number = request.user.phone
            form.save()
            callout = form.save()
            form_images.save_for(callout)
    else:
        form = CallCreateForm()
        form_images = CallImagesForm()
    return render(request, 'app/create.html', {'form': form, 'form_images': form_images})
Вернуться на верх