【问题标题】:Django form always shows error "This field is required"Django 表单总是显示错误“此字段是必需的”
【发布时间】:2011-08-13 22:41:49
【问题描述】:

当我渲染我的表单时,django 总是在每个字段上显示一条错误消息“此字段是必需的” 即使没有提交表单。可能是什么问题?

这是我的模型表格

class MMEditidStateForm(forms.ModelForm):
  class Meta:
     model = models.MMEditidState
     exclude = ('status_id',)

这是我的模型

class MMEditidState(models.Model):
  state_id = models.IntegerField(primary_key = True)
  state_dremelid = models.ForeignKey(MMDremelDump, db_column = 'state_dremelid')
  assignee = models.CharField(max_length = 50)
  state = models.CharField(max_length = 50)
  role = models.CharField(max_length = 50)
  date = models.DateTimeField() 
  class Meta:
     db_table = u'mm_editid_state'
  def __unicode__(self):
     return u'%s %s' % (self.state_dremelid, self.assignee)

这是我的看法

def qcthisedit(request, get_id):
  dremel_id = MMEditidState.objects.filter(pk=get_id).values('state_dremelid')
  if request.method == "POST":
     form = forms.MMEditidStateForm(request.POST)
     if form.is_valid():
        form.save()
      return http.HttpResponseRedirect('/mmqc/dremel_list/')
  else:
     form = forms.MMEditidStateForm(request.POST)
  return shortcuts.render_to_response('qcthisedit.html',locals(),
                                  context_instance = context.RequestContext(request))

现在我只是将模板中的表单呈现为

    <table>
    <h3>Submit this form if there are no errors</h3>

    <form action="." method="post">
    {{form.as_table}}      
    </table>
    <input type="submit" value="Submit">
    <INPUT TYPE="BUTTON" VALUE="Go Back" ONCLICK="history.go(-1)"></form><br> 

请告诉我可能是什么问题?以前我没有收到此错误消息

【问题讨论】:

    标签: django forms


    【解决方案1】:

    因为您总是使用request.POST 来实例化您的表单,即使您实际上并没有向它发帖。在您的 else 子句中,删除 request.POST

    【讨论】:

    • 只是为了澄清丹尼尔的回答:form = forms.MMEditidStateForm()
    【解决方案2】:

    或使用

    form = forms.MMEditidStateForm(request.POST or None)
    

    没有if条件,像这样:

    def qcthisedit(request, get_id):
      dremel_id = MMEditidState.objects.filter(pk=get_id).values('state_dremelid')
      form = forms.MMEditidStateForm(request.POST or None)
      if form.is_valid():
         form.save()
         return http.HttpResponseRedirect('/mmqc/dremel_list/')
    
      return shortcuts.render_to_response('qcthisedit.html',locals(),
                                      context_instance = context.RequestContext(request))
    

    【讨论】:

      【解决方案3】:

      对于那些仍在寻求答案的人: 我有同样的问题。在这种情况下,我的建议是更新这一行:

      form = forms.MMEditidStateForm(request.POST or None)
      

      希望对您有所帮助。

      【讨论】:

      • 这并没有解决它,所需的消息仍在显示...@Daniel 的答案是正确的
      猜你喜欢
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2012-05-26
      • 2020-06-02
      • 2019-04-13
      • 2012-12-02
      • 2016-04-29
      相关资源
      最近更新 更多