首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError:'image‘

KeyError:'image‘
EN

Stack Overflow用户
提问于 2018-01-20 23:34:00
回答 1查看 2.9K关注 0票数 0

当我尝试保存详细信息时,出现以下错误: KeyError:'image‘。我不明白,为什么?views.py中的错误。我想一次上传多张照片

views.py:

代码语言:javascript
复制
@user_passes_test(lambda u: u.is_superuser)
def new_detail(request):
ImageFormSet = modelformset_factory(DetailImage,
                                    form=ImageForm, extra=10)
if request.method == 'POST':
    form = DetailForm(request.POST)
    formset = ImageFormSet(request.POST, request.FILES,
                           queryset=DetailImage.objects.none())

    if form.is_valid() and formset.is_valid():
        detail_form = form.save()
        detail_form.save()
        for form in formset.cleaned_data:
            images = form['image'] # HERE IS THE PROBLEM
            photo = DetailImage(detail=detail_form, image=images)
            photo.save()
        return redirect('/new_detail/')
else:
    form = DetailForm(request.POST)
    formset = ImageFormSet(queryset=DetailImage.objects.none())
return render(request, 'shop/new_detail.html',
{'form': form,'formset': formset})

forms.py

代码语言:javascript
复制
...
class ImageForm(forms.ModelForm):
image = forms.ImageField()
class Meta:
    model = DetailImage
    fields = ('image',)

models.py

代码语言:javascript
复制
...
class DetailImage(models.Model):
detail = models.ForeignKey(Detail, related_name='images',
on_delete=models.CASCADE)
image = models.ImageField(upload_to='details', null = True, blank = True)
EN

回答 1

Stack Overflow用户

发布于 2018-07-11 22:37:48

KeyError:在您的例子中,'image‘意味着在您的表单集中清理的数据中的一个表单中没有'image’键。您应该执行检查。如下所示:

代码语言:javascript
复制
    for form in formset.cleaned_data:
        if 'image' in form:
            image = form['image']
            photo = DetailImage(detail=detail_form, image=image)
            photo.save()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48357882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档