Как сохранить каждый файл в request.FILES с циклом for в Django? - PullRequest
0 голосов
/ 19 апреля 2019

Хорошо, я посмотрел многие ответы в Интернете, но, похоже, ни один из них не решил эту проблему. Я пытаюсь сохранить каждый из многофайловой загрузки, но он продолжает сохранять один и тот же файл несколько раз. Что-то с моим атрибутом 'form' вызывает эту проблему, но я не могу понять, почему.

views.py

def upload_book(request):
if request.method == 'POST':  
    for f in request.FILES.getlist('pdf'):
        form = BookForm()
        form = BookForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
    return redirect('book_list')
else:
    form = BookForm()
return render(request, 'upload_book.html', {
    'form': form
})

forms.py

    class BookForm(forms.ModelForm):
        class Meta:
            model = Book
            fields = ('pdf',)
            widgets = {
                'pdf': forms.ClearableFileInput(attrs={'multiple': True}),
            }

models.py

    class Book(models.Model):
        pdf = models.FileField(upload_to='books/pdfs/')

        def __str__(self):
            return self.title

        def delete(self, *args, **kwargs):
            self.pdf.delete()
            super().delete(*args, **kwargs)

1 Ответ

0 голосов
/ 22 апреля 2019

Мне удалось решить мою проблему, создав экземпляр BookForm и отправив данные через цикл.Надеюсь, что это поможет кому-то еще в будущем.

Views.py

    def upload_book(request):
if request.method == 'POST':
    for f in request.FILES.getlist('pdf'):
        form = BookForm(request.POST, request.FILES)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.pdf = f
            obj.save()
    return redirect('book_list')
else:
    form = BookForm()
return render(request, 'upload_book.html', {
    'form': form
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...