0

我有一个易碎的表格,我想将一个字段从 更改TextareaCKEDitorUploadingWdidget

所以我的表格看起来像这样(我已经离开了以前的工作:

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>

而这个观点

def rename_study(request, study_name):
    #do stuff
    return render(request, 'researcher_UI/add_study_modal.html', form_package)

所以我的 ckeditor 的 JavaScript 现在正在加载,而不是在文档最初加载时加载,所以我认为这会导致问题。任何想法都非常感谢

4

1 回答 1

1

找到了答案。表单正在通过 ajax 提交。因此,我需要将 CKEditor 数据复制到表单字段中,我使用

for (var instance in CKEDITOR.instances){
    CKEDITOR.instances[instance].updateElement();
}
于 2019-09-30T18:04:02.247 回答