Как добавить несколько фото в форме 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})