Можно ли загрузить несколько фотографий с помощью одной и той же кнопки загрузки? Я знаю, что есть дополнительный виджет, который позволяет добавлять определенное количество изображений к modelformset_factory
, но я ищу способ, позволяющий пользователю решать, сколько фотографий загружать. Все отлично работает, если я добавлю extra=3
в форму. Но я хотел бы полностью устранить это. Некоторые пользователи захотят загрузить 3 фото, а некоторые - 25.
Мой взгляд
def list_home(request):
image_form_set = modelformset_factory(Images, form=ImageForm)
if request.method == "POST":
listing_form = ListingForm(request.POST)
formset = image_form_set(request.POST, request.FILES, queryset=Images.objects.none())
if listing_form.is_valid() and formset.is_valid():
post = listing_form.save(commit=False)
post.user = request.user
post.save()
for form in formset.cleaned_data:
if form:
image = form['image']
photo = Images(listing=post, image=image)
photo.save()
return render(request, 'success.html')
Моя форма
Класс ListingForm (forms.ModelForm):
class Meta:
model = Listing
exclude = ('user', 'longitude', 'latitude', 'pub_date')
class ImageForm(forms.ModelForm):
image = forms.ImageField(label='Image', widget=ClearableFileInput(attrs={'multiple': True}))
class Meta:
model = Images
fields = ['image']
Модель My Image
class Images(models.Model):
image = models.ImageField(upload_to=get_image_filename, verbose_name='Image')
listing = models.ForeignKey(Listing, on_delete=models.CASCADE)
def __str__(self):
return str(self.image)