django - 使用 Django 的多文件上传无法按预期工作
问题描述
我在上传多个文件时遇到问题。上传的文件是pdf,只保存一个。
视图.py
def attachments(request):
to = TravelOrder.objects.order_by('-date_filling').last()
if request.method == 'POST':
form = AttachmentsForm(request.POST, request.FILES)
if form.is_valid():
for f in request.FILES.getlist('attachment'):
file_instance = Attachements(travel_order=to, attachment=f)
file_instance.save()
print('YEY')
return redirect('attach')
else:
form = AttachmentsForm()
context = {
'form': form
}
return render(request, 'employee/attachments.html', context)
模型.py
class TravelOrder(models.Model):
created_by = models.CharField(max_length=255)
start_date = models.DateField(auto_now=False)
end_date = models.DateField(auto_now=False)
wfp = models.CharField(max_length=255, verbose_name='Wfp Where to be charged')
purpose_of_travel = models.CharField(max_length=255)
region = models.ForeignKey(Region, on_delete=models.CASCADE)
venue = models.CharField(max_length=255)
date_filling = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=15)
def __str__(self):
return self.purpose_of_travel
class Attachements(models.Model):
at_id = models.AutoField(primary_key=True)
travel_order = models.ForeignKey(TravelOrder, on_delete=models.CASCADE)
attachment = models.FileField(upload_to='attachment/')
解决方案
我认为您在循环结束之前返回。
for f in request.FILES.getlist('attachment'):
file_instance = Attachements(travel_order=to, attachment=f)
file_instance.save()
print('YEY')
return redirect('attach')
将返回外部循环,以便重定向仅在保存所有文件后发生。这意味着
for f in request.FILES.getlist('attachment'):
file_instance = Attachements(travel_order=to, attachment=f)
file_instance.save()
print('YEY')
return redirect('attach')
推荐阅读
- excel - Excel 列出具有不同值的 ID
- html - 用于表格水平滚动的跨浏览器功能
- itext - 如何处理 XMLWorkerHelper.ParseToElementList 中的图像
- uwp - 使用 UWP 地图作为用户旅行位置绘制路线的最佳方法是什么
- react-native - React native:createStackNavigator 与实际屏幕内容重叠(Android)
- ibm-midrange - 在 RPG 中覆盖。
- python-3.x - Mypy 在类型分支时错误地报告联合类型变量的错误
- c# - 在 C# Xamarin.Forms 中将 DatePicker 绑定到类 Model 的字符串属性
- excel - 计算不是 Application 或 ActiveWorkbook 的方法
- git - 仅还原分支上的更改