表单验证通过,但模型验证失败,仍然在表单上显示错误.有人能解释一下吗?



我有一个带有一个字段'name'的模型Books,我将max_length设置为10。

class Books(models.Model):
name = models.CharField(max_length=10)

然而,在modelform BookForm中,我已经将max_length定义为20。

class BookForm(forms.ModelForm):
name = forms.CharField(max_length=20)
class Meta:
fields = ['name']
model = Books

现在,当提交超过10个长度的表单时,它会给我一个错误,说字段最多可以有10个字符。

def book(request):
if request.method == 'POST':
fm = BookForm(data=request.POST)
print(fm.is_valid())
print(fm)
if fm.is_valid():
fm.save()
return render(request, 'enroll/books.html', {'form':fm})
fm = BookForm()
return render(request, 'enroll/books.html', {'form':fm})

在这里输入图像描述谁能解释一下为什么会发生这种情况,以及我可以阅读模型形式和模型在验证方面如何相互作用的任何具体文章或链接吗?

模型表单将根据您的模型及其约束自动定义字段。由于您已经在Model中定义了带有max_length验证的名称字段,因此您不需要在表单中提供它。

class BookForm(forms.ModelForm):
class Meta:
fields = ['name']
model = Books

最新更新