【问题标题】:Django - Inline formset always has error on POSTDjango - 内联表单集在 POST 上总是有错误
【发布时间】:2013-03-02 21:57:27
【问题描述】:

我有一个内联表单集:

OptionFormset = inlineformset_factory(App, AppOptions, can_delete=True, extra=1,
            fields = ['options', 'conditions'])

提交表单时,我会在模板中进行验证:

      {% if formset.errors %}
          <p style="color: red;">
              Please correct the error:
          {{ formset.errors }}
          </p>
      {% endif %}

打印返回:

Please correct the error [{}, {}] 

很明显,form没有报错,它们在formset.errors中也没有报错,错误大概是在视图中吧?

view.py:

  def setAppOption(request, app_name):
      app_selected = App.objects.get(app_name=app_name, created_by=request.user)
      formset = OptionsFormSet(instance=fusionTable_selected)
      if request.method == 'POST':
          formset = OptionFormset(request.POST, instance=fusionTable_selected)
            if formset.is_valid():   
              formset.save()

      return render_to_response("ezApp/manage__Options.html", {'formset': formset}, context_instance=RequestContext(request))

models.py

    class App(models.Model):
        layer_name = models.SlugField(max_length=50)

        def __unicode__(self):
            return self.layer_name

    class AppOptions(models.Model):
        app = models.ForeignKey(EzApp)
        condition = models.CharField('SQL Query Conditions', max_length=100, blank=True)
        option = models.CharField('SQL Query Conditions', max_length=100, blank=True

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    正确显示 formset.errors

    {% for dict in formset.errors %}
        {% for error in dict.values %}           
            Please correct the error: {{ error }}
        {% endfor %}
    {% endfor %}
    

    【讨论】:

    • 谢谢。我这样做了,但奇怪的是 {& if formset.errors %} 是真的,但没有显示错误。刚刚写的请更正错误:
    • 奇怪的是,即使出现错误消息,我也可以保存表单。在视图中我使用 formset.is_valid() 并保存。
    • 对不起,我会搜索一下为什么 formset.errors 返回 True
    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2019-05-15
    • 2011-07-11
    • 2011-09-17
    • 1970-01-01
    • 2019-09-23
    • 2016-03-15
    相关资源
    最近更新 更多