当前位置:  开发笔记 > 后端 > 正文

Django formset不验证

如何解决《Djangoformset不验证》经验,为你挑选了1个好方法。

我试图保存一个formset但它似乎绕过is_valid(),即使有必要的字段.

为了测试这个我有一个简单的形式:

class AlbumForm(forms.Form):
  name = forms.CharField(required=True)

风景:

@login_required
def add_album(request, artist):
  artist = Artist.objects.get(slug__iexact=artist)
  AlbumFormSet = formset_factory(AlbumForm)
  if request.method == 'POST':
    formset = AlbumFormSet(request.POST, request.FILES)
    if formset.is_valid():
      return HttpResponse('worked')
  else:
    formset = AlbumFormSet()
  return render_to_response('submissions/addalbum.html', {
   'artist': artist,
   'formset': formset,
  }, context_instance=RequestContext(request))

和模板:

{% csrf_token %} {{ formset.management_form }} {% for form in formset.forms %}
    {% for field in form %}
  • {{ field.label_tag }} {{ field }} {{ field.errors }}
  • {% endfor %}
{% endfor %}

最后发生的事情是我点击"添加"而没有输入名称然后HttpResponse('working')被称为似乎假设它是一个有效的形式.

我可能在这里遗漏了一些东西,但我看不出有什么不对劲.我想要发生的是,就像任何其他形式一样,如果字段需要在未填写时吐出错误.任何想法?



1> mpen..:

嘿,我遇到了同样的问题.问题是你正在使用formset !! 表单集允许表单中的所有字段为空.但是,如果您有2个字段,并且只填写一个字段,那么它将识别您所需的内容.这样做是因为formset是为"批量添加"而制作的,有时你不想填写页面上的所有额外表格.真烦人 你可以在这里看到我的解决方案

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有