Валидация формы прошла, но валидация модели не прошла, и все равно ошибка отображается на форме. Кто-нибудь может объяснить?

У меня есть модель 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
Вернуться на верх