Django Modelform 总是返回 is_valid=False( bound=True, valid=False)

时间:2021-04-23 10:54:36

标签: django-models django-views django-forms django-validation

我有一个 ModelForm 用于带有 Integer 字段的模型,传递给表单对象的数据总是将 form.is_valid() 返回为 false。该代码适用于所有其他 ModelForm。我认为这个问题与 IntegerField 有关。我检查了传递给表单的数据;看起来不错。
request.POST 数据是:

<块引用>

, ['POST]

form.py:

class StudentIELTSDetailsForm(forms.ModelForm):
    class Meta:
       model=StudentIELTSDetails
       fields = ["studentIELTSReading", "studentIELTSWriting", "studentIELTSSpeaking",
        "studentIELTSListening","studentEmail",]
 
       labels={"studentIELTSReading":"Reading", "studentIELTSWriting":"Writing",
       "studentIELTSSpeaking":"Speaking", "studentIELTSListening":"Listening"}

view.py

def saveStudentIELTS(request):
    messsage=""
    if request.method=="POST":
      username=request.user.username
      student=StudentIELTSDetails.objects.filter(studentEmail=username).exists()
      print(student)
      if student is False :
        form=StudentIELTSDetailsForm(request.POST)
        print(request.POST)
        if form.is_valid():
          form.save()
          messsage="IELTS details saved Succesfully"
      else:
          messsage="user IELTS details already submitted"
   
    return JsonResponse({'message3':messsage})

models.py:

class StudentIELTSDetails(models.Model):
    studentEmail=models.ForeignKey(StudentPersonalDetails, on_delete=models.CASCADE)
    studentIELTSReading=models.IntegerField(choices=ieltsScore, default='Low')
    studentIELTSWriting=models.IntegerField(choices=ieltsScore, default='Low')
    studentIELTSSpeaking=models.IntegerField(choices=ieltsScore, default='Low')
    studentIELTSListening=models.IntegerField(choices=ieltsScore, default='Low')

0 个答案:

没有答案
相关问题