首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django表单总是显示错误“此字段是必需的”

Django表单总是显示错误“此字段是必需的”
EN

Stack Overflow用户
提问于 2011-04-27 22:50:41
回答 3查看 19K关注 0票数 9

当我呈现我的表单时,django总是在每个字段上显示错误消息"This field is required“,即使表单没有提交。可能的问题是什么?

这是我的模型表格

代码语言:javascript
复制
class MMEditidStateForm(forms.ModelForm):
  class Meta:
     model = models.MMEditidState
     exclude = ('status_id',)

这是我的模型

代码语言:javascript
复制
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)

这是我的观点

代码语言:javascript
复制
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))

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

代码语言:javascript
复制
    <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> 

请让我知道问题出在哪里?以前我没有收到这个错误信息

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-27 23:12:02

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

票数 23
EN

Stack Overflow用户

发布于 2011-04-28 04:58:00

或使用

代码语言:javascript
复制
form = forms.MMEditidStateForm(request.POST or None)

不带if条件,如下所示:

代码语言:javascript
复制
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))
票数 6
EN

Stack Overflow用户

发布于 2017-04-04 09:28:59

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

代码语言:javascript
复制
form = forms.MMEditidStateForm(request.POST or None)

希望能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5806059

复制
相关文章

相似问题

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