Форма Django с редактором MediumEditor не учитывает обязательный атрибут

В Django у меня есть TextField под названием 'description' в модели с null и blank, установленными на False (для проверки на стороне сервера и клиента). Я использую forms.ModelForm для извлечения поля и forms.Textarea для назначения атрибутов. В атрибутах я назначаю атрибут класса medium-editor-textarea для использования MediumEditor. Это поле работает, как и предполагалось, и действительно вызывается MediumEditor js, чтобы пользователь мог использовать MediumEditor wysiwyg в текстовой области; у меня также есть скрипт в шаблоне формы, который инициализирует новый экземпляр класса MediumEditor со всеми элементами, имеющими класс 'editable': var editor = new MediumEditor('.editable');. Проблема заключается в том, что, хотя div и textarea содержат атрибут required, на стороне клиента не выдается сообщение о том, что это поле необходимо, когда пользователь отправляет форму. Вместо этого я постоянно получаю в консоли следующее сообщение об ошибке: An invalid from control with name='description' is not focusable, и это указывает на тег textarea. Короче говоря, даже при наличии обязательных атрибутов подсказка браузера о том, что поле не может быть пустым, не срабатывает на стороне клиента. Вот соответствующий код, очищенный от других полей для удобства чтения:

models.py

class AModel(models.Model):
    ...
    description = models.TextField(null=False, blank=False)
    ...

forms.py

class AModelForm(forms.ModelForm):
    required_css_class = 'required'     
    class Meta():
        model = AModel
        fields = (...'description'...)
        labels = {
            ...
            'description':'Description',
            ...
        }
        widgets = {
            ...
            'description': forms.Textarea(attrs={'class':'gls-textarea editable medium-editor-textarea gls-width-1-1 gls-height-small','rows':'5','data-placeholder':'Add a description...','required':'',}),
            ...
        }     

html в браузере (шаблон output):

<form method="post" enctype="multipart/form-data">
    <input type="hidden" name="csrfmiddlewaretoken" value="123456">
        ...
        <p>
            <label for="id_description" class="required">Description:</label>
            <div class="gls-textarea editable medium-editor-textarea gls-width-1-1 gls-height-small medium-editor-element" id="medium-editor-123456" name="description" cols="40" rows="5" data-placeholder="Add a description..." required="" medium-editor-textarea-id="medium-editor-123456" contenteditable="true" spellcheck="true" data-medium-editor-element="true" role="textbox" aria-multiline="true" data-medium-editor-editor-index="1" medium-editor-index="123456-some-index" data-medium-focused="true"></div>
            <textarea name="description" cols="40" rows="5" class="gls-textarea editable medium-editor-textarea gls-width-1-1 gls-height-small medium-editor-hidden" data-placeholder="Add a description..." required="" id="id_description" medium-editor-textarea-id="medium-editor-123456"></textarea>
        </p>
        ...
        <button class="gls-button gls-button-primary" type="submit">Post This Thing</button>                
</form>
Вернуться на верх