Django表单始终显示错误"此字段是必需的"

vkr*_*ams 5 forms django

当我渲染我的表单时,即使表单未提交,django也会在每个字段上显示错误消息"此字段是必需的".可能是什么问题呢?

这是我的模型表格

class MMEditidStateForm(forms.ModelForm):
  class Meta:
     model = models.MMEditidState
     exclude = ('status_id',)
Run Code Online (Sandbox Code Playgroud)

这是我的模特

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)
Run Code Online (Sandbox Code Playgroud)

这是我的看法

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))
Run Code Online (Sandbox Code Playgroud)

现在我只是在模板中渲染我的表单

    <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> 
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*man 17

因为您总是使用实例化表单request.POST,即使您实际上没有发布它.在你的else条款中,放弃request.POST.


ole*_*yan 6

或使用

form = forms.MMEditidStateForm(request.POST or None)
Run Code Online (Sandbox Code Playgroud)

没有 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))
Run Code Online (Sandbox Code Playgroud)