Валидация формы прошла, но валидация модели не прошла, и все равно ошибка отображается на форме. Кто-нибудь может объяснить?
У меня есть модель Books с одним полем 'name' и я установил 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})
введите описание изображения здесь. Может ли кто-нибудь объяснить, почему это происходит, и какую-нибудь конкретную статью или ссылку, где я могу прочитать, как форма модели и модели работают друг с другом в плане валидации.
Форма модели автоматически определит поля на основе вашей Модели и ее ограничений. Поскольку вы определили поле name с валидацией max_length в Model, вам не нужно задавать его в форме.
class BookForm(forms.ModelForm):
class Meta:
fields = ['name']
model = Books