我正在尝试使用带有django的表单上传多个图像。我设法允许用户上传它们,但是当我验证表单时,我总是收到我需要上传图片的消息,但我可以看到request.FILES
包含所有上传的图像。
这是我的表格:
class ProductForm(ModelForm):
class Meta:
model = models.Product
fields = ['name', 'style', 'description', 'buy_url', 'price', 'currency', 'images']
error_messages = {
NON_FIELD_ERRORS: {
'buy_url': "%(model_name)s's %(field_labels)s are not unique.",
}
}
widgets = {
'description': Textarea(attrs={'cols': 80, 'rows': 10}),
'images': FileInput(attrs={'multiple': ''})
}
这里的观点:
class CreateProductView(AuthenticatedUserView):
template_name = 'myapp/product.html'
def get_if_authenticated(self, request, user):
form = ProductForm()
return render(request, self.template_name, {"form": form})
def post_if_authenticated(self, request, user):
form = ProductForm(request.POST)
if form.is_valid():
product = form.save(commit=False)
# Here do something with the images
product.user = user
product.save()
return HttpResponseRedirect(reverse('myapp:actions'))
return render(request, self.template_name, {"form": form})
我尝试添加方法clean_images
,但它永远不会被调用。
如何在帖子请求中成功验证文件?
谢谢!
答案 0 :(得分:1)
您还需要将request.FILES传递给表单。尝试从
更改行form = ProductForm(request.POST)
到
form = ProductForm(request.FILES, request.POST)