gpt4 book ai didi

python - 如何在 Django 中使用 for 循环将每个文件保存在 request.FILES 中?

转载 作者:行者123 更新时间:2023-12-04 14:20:10 25 4
gpt4 key购买 nike

好吧,我看了网上的很多答案,但似乎没有一个能解决这个问题。我正在尝试从多文件上传中保存每个文件,但它会多次保存相同的文件。我的“表单”属性导致了这个问题,但我似乎无法弄清楚原因。

View .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
})

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

模型.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)

最佳答案

通过创建 BookForm 实例并通过循环提交数据设法解决了我的问题。希望这对将来的其他人有所帮助。

View .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
})

关于python - 如何在 Django 中使用 for 循环将每个文件保存在 request.FILES 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55755714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com