我的模型有一个工作输入表单,其中包含一个名为' 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__"
没有帮助。
答案 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__"