Javascript Django ckeditor不使用脆表单保存编辑
我有一个cripsy表单,我想将一个字段从Javascript Django ckeditor不使用脆表单保存编辑,javascript,django,django-crispy-forms,django-ckeditor,Javascript,Django,Django Crispy Forms,Django Ckeditor,我有一个cripsy表单,我想将一个字段从Textarea更改为ckeditor uploadingwdidget 所以我的表格看起来是这样的(我离开了之前的工作: class RenameStudyForm(BetterModelForm): name = forms.CharField(label='Study Name', max_length=51, required=False) # Update study name #waiver = forms.CharField
Textarea
更改为ckeditor uploadingwdidget
所以我的表格看起来是这样的(我离开了之前的工作:
class RenameStudyForm(BetterModelForm):
name = forms.CharField(label='Study Name', max_length=51, required=False) # Update study name
#waiver = forms.CharField(widget=forms.Textarea, label='Waiver of Documentation', required=False)
waiver = forms.CharField(widget=CKEditorUploadingWidget(), label='Waiver of Documentation', required=False)
我已将我的模型修改如下:
class study(models.Model):
researcher = models.ForeignKey("auth.user") # Researcher's name
name = models.CharField(max_length = 51) # Study name
instrument = models.ForeignKey("instrument") # Instrument associated with study
#waiver = models.TextField(blank = True)
waiver = RichTextUploadingField(blank = True)
我的模板外观有:
{% load crispy_forms_tags %}
{{ form.media }}
{% crispy form %}
当我进入屏幕编辑豁免时,我会得到一个富格文本字段进行编辑,正如我所期望的那样。但是,我在该字段中输入的任何内容都不会传递回表单。在表单中,我添加了一条打印语句,如下所示
def clean(self):
cleaned_data = super(RenameStudyForm, self).clean()
print(cleaned_data['waiver'])
打印的总是原文。有人能帮我吗
编辑
当我对forms.Textarea小部件使用CKEditorUploadingWidget时,我一直在查看控制台,它似乎生成了以下jQuery警告
主线程上的同步XMLHttpRequest已被弃用,因为
它会对最终用户的体验产生不利影响
我相信我得到了这个,因为我正在使用这个按钮将表单加载到一个模式中
<button type="button" class="btn btn-secondary btn-block" onclick = "modal_form('/interface/study/{{ current_study|urlencode }}/rename_study/')" >Update Study</button>
因此,我的ckeditor JavaScript现在正在加载,而不是在文档最初加载时加载,因此我认为这是问题的原因。任何真正值得赞赏的想法都找到了答案。表单是通过ajax提交的。因此,我需要将ckeditor数据复制到表单字段中,我可以使用它
for (var instance in CKEDITOR.instances){
CKEDITOR.instances[instance].updateElement();
}
您是否在
清理(self)
中收到其他字段?是的,其他一切都很好
for (var instance in CKEDITOR.instances){
CKEDITOR.instances[instance].updateElement();
}