Django-ckeditor не сохраняет правки с хрустящими формами - PullRequest
0 голосов
/ 29 сентября 2019

У меня грязная форма, и я хочу изменить одно поле с 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'])

Печать всегда дает исходный текстМожет кто-нибудь помочь мне, пожалуйста

РЕДАКТИРОВАТЬ

Я просматривал консоль, когда я использую CKEditorUploadingWidget для виджета forms.Textarea, и он, кажется, генерируетследующее предупреждение 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)

Так что мой JavaScript для ckeditor загружается сейчас, а не когда документ изначально загружен, поэтому я думаю, что этовызывает проблемы.Любые мысли очень ценятся

1 Ответ

0 голосов
/ 30 сентября 2019

Нашел ответ.Форма отправляется через ajax.Поэтому мне нужно скопировать данные CKEditor в поле формы, что я делаю с

for (var instance in CKEDITOR.instances){
    CKEDITOR.instances[instance].updateElement();
}
...