Django-ckeditor 不使用 crispy-forms 保存编辑
Django-ckeditor not saving edits with crispy-forms
我的表格很糟糕,我想将一个字段从 Textarea
更改为 CKEDitorUploadingWdidget
所以我的表格看起来像这样(我已经离开了以前的工作:
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 警告
Synchronous XMLHttpRequest on the main thread is deprecated because of
its detrimental effects to the end user's experience.
我相信我得到这个是因为我正在使用这个按钮将表单加载到模式中
<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)
所以我的 JavaScript for ckeditor 现在正在加载,而不是在最初加载文档时加载,所以我认为这会导致问题。任何想法真的很感激
找到答案了。正在通过 ajax 提交表单。因此,我需要将 CKEditor 数据复制到表单字段中,我使用
for (var instance in CKEDITOR.instances){
CKEDITOR.instances[instance].updateElement();
}
我的表格很糟糕,我想将一个字段从 Textarea
更改为 CKEDitorUploadingWdidget
所以我的表格看起来像这样(我已经离开了以前的工作:
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 警告
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience.
我相信我得到这个是因为我正在使用这个按钮将表单加载到模式中
<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)
所以我的 JavaScript for ckeditor 现在正在加载,而不是在最初加载文档时加载,所以我认为这会导致问题。任何想法真的很感激
找到答案了。正在通过 ajax 提交表单。因此,我需要将 CKEditor 数据复制到表单字段中,我使用
for (var instance in CKEDITOR.instances){
CKEDITOR.instances[instance].updateElement();
}