我正在使用django模型。在将站点部署到服务器之前,我在表中有两列:
total_marks_twelvth | int(11) | NO | | NULL | |
| obtained_marks_twelvth | int(11) | NO | | NULL | |
上传后,我不得不将obtained_marks_twelvth
更改为浮动。现在,改变反映在表格中:
| total_marks_twelvth | int(11) | NO | | NULL | |
| obtained_marks_twelvth | double | NO | | NULL | |
但是,问题是在检查视图中的form.is_valid()方法时没有反映出上述变化。
if form.is_valid():
name = request.POST.get("name")
form.save()
上述方法返回false,并抛出错误:
* Enter a whole number.
在浏览器中。
之前的模型是:
total_marks_twelvth = models.IntegerField()
obtained_marks_twelvth = models.IntegerField()
我把它改为:
total_marks_twelvth = models.IntegerField()
obtained_marks_twelvth = models.FloatField()
在此之后我运行了makemigrations
和migrate
。它成功执行了。
所以,我在这里得出的结论是变化反映在数据库中,而不是模型上。为什么会这样?请帮忙解决这个问题。
编辑:
观点是:
if request.method == 'POST':
form = StudentForm(request.POST)
if form.is_valid():
name = request.POST.get("name")
form.save()
print "Form is saved successfully."
return render(request, 'success.html',{'name' : name})
else:
print "Something went wrong"
print form.errors
return render(request, 'apply.html',{'form' : form})
表格是:
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = '__all__'
此模型包含学生模型类:
class Student(models.Model):
"""here goes model for users"""
def __str__(self):
return "%s %s" % ( self.name,self.enrollment_no)
total_marks_twelvth = models.IntegerField()
obtained_marks_twelvth = models.FloatField()
看起来django没有使用最新的迁移,但更改反映在数据库中。
我得到的错误是: