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

时间:2016-11-17 18:09:54

标签: django tinymce django-tinymce

我的模型有一个工作输入表单,其中包含一个名为' 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>

点击&#39;提交&#39;结果没有可观察到的影响。 一切都运行良好,直到我将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__"      

没有帮助。

1 个答案:

答案 0 :(得分:2)

好吧,事实证明这确实是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__"