Форма Django всегда показывает ошибку «Это поле обязательно для заполнения» - PullRequest
4 голосов
/ 27 апреля 2011

При рендеринге формы 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> 

Пожалуйста, дайте мне знать, в чем может быть проблема? Ранее я не получил это сообщение об ошибке

Ответы [ 3 ]

15 голосов
/ 27 апреля 2011

Поскольку вы всегда создаете экземпляр своей формы с помощью request.POST, даже если на самом деле не публикуете ее. В своем предложении else отбросьте request.POST.

3 голосов
/ 28 апреля 2011

или используйте

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))
0 голосов
/ 04 апреля 2017

Для тех, кто все еще ищет ответ: у меня была такая же проблема.В этом случае я рекомендую обновить эту строку:

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

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...