将 TextField 更改为 HTMLField 后,表单停止保存到数据库

Form stopped saving to database after TextField was changed to HTMLField

我的模型有一个有效的输入表单,其中包含一个名为 'Opis' 的 TextField。模型的实例已成功保存到数据库中。但是,我想在编写和存储特定文本位时为我的用户提供更多选择。所以我安装了 TinyMCE,将 TextField 更改为 HTMLField 并发现这个,连同

<head> {{ form.media }} </head> 

在我的模板开头足以将输入字段呈现为 TinyMCE 小部件。也就是说,我保留了我的旧 ModelForm,它显示的内容发生了变化,我认为这很好也很方便。但是,当用户提交表单时,没有任何反应 -- 表单似乎有效,但数据库没有更新。

在我的 models.py:

from tinymce.models import HTMLField

class Kurs(models.Model):
   [skipping...]
   opis = HTMLField()
   [skipping the rest]

在我的 forms.py:

class KursForm(ModelForm):
    class Meta:
        model = Kurs
        fields = "__all__"      

在我的 views.py:

def createcourse(request):
    if request.method=='POST':
        form = KursForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/polls/usersite')
    else:
        form = KursForm()

    return render(request, 'polls/createcourse.html', {"form" : form})

并在 createcourse.html 中:

<head>{{ form.media }}</head>

<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>

点击 'Submit' 没有明显效果。 在我将 TextField 更改为 HTMLField 之前,一切都运行良好。我做错了什么?

编辑:似乎有人提出了关于 TinyMCE 的 similar issue,但我想报告一下,在我的案例中,将 forms.py 中的表格编辑为

class KursForm(ModelForm):
    opis = forms.CharField(widget=TinyMCE(attrs={'required': False, 'cols': 30, 'rows': 10}))
    class Meta:
        model = Kurs
        fields = "__all__"      

没有帮助。

好的,原来这确实是TinyMCE的问题。 ClaudeP 非常友好地在 this 线程中帮助我。综上所述,我现在所拥有的以及正在做的工作如下:

-- 小部件的子类化:

class TinyMCEWidget(TinyMCE):
    def use_required_attribute(self, *args):
        return False

-- 已将表格修改为以下内容(我想这可能是可选的):

class KursForm(ModelForm):
    opis = forms.CharField(widget=TinyMCEWidget(attrs={'required': False, 'cols': 30, 'rows': 10}))
    class Meta:
        model = Kurs
    fields = "__all__"