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