ckeditor 不保存更改 django

ckeditor not saving changes django

我有一个表单,在其中一个字段中,我使用了 ckeditor。但是,当我提交表单时,ckeditor 字段中的更改没有被保存。在模型中,我已将字段更改为 RichTextField。我也在设置中的应用程序中安装了“ckeditor”。

我也曾尝试在我的模板中加载这些脚本:

{% load static %}

<script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>
<script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script> 

除此之外,我还尝试添加 {{ form.media }} 而不是脚本,但它仍然不起作用。

我正在使用 HTMX 动态更新表单。

这是我现在的表单模板

<form action='' method="POST" class="form" hx-post='' hx-swap='outerHTML'>
    {% csrf_token %}
    {{ form.media }}
    <div class="form-group">
    {% for field in form %}
            {{ field }}
     </div>
    {% endfor %}
    
   
    <br>

    <div class='htmx-indicator'>Loading...</div>
    <div class="text-center">
        <button class='htmx-inverted-indicator' type='submit' >Save</button>
      </div>
    
    {% if message %}
        <p>{{ message }}</p>
    {% endif %}
    
</form>

有人知道为什么表格没有被保存吗?

编辑 这是我的看法

@login_required
def book_update_view(request, id=None):
    book = get_object_or_404(Book, id=id)
    form = BookForm(request.POST or None, instance=book)
       context = {
        "form": form,
         "object": book,
     }
    if form.is_valid():
         form.save()
         context['message'] = 'Saved!'
    if request.htmx:
        return render(request, "book/snippets/forms.html", context)
    return render(request, "book/update.html", context)  

看起来 CKEditor 和 HTMX 之间存在冲突。以下严重依赖 this answer。它进行了以下更改:

  • 将 HTMX 标签切换到按钮而不是表单

  • 应用事件 CKEditor 的监听器 - 它通过 {{field.label_tag}} 现在包括

  • 修复错位的标签

尝试将表单制作成这样(不要忘记替换 CKEditor 字段的名称 - 您可能需要检查源代码以了解其呈现方式):

<form method="post">
{% csrf_token %}
{{ form.media }}

<script>
document.body.addEventListener('htmx:configRequest', (event) => {
    var element = new CKEDITOR.dom.element( document.getElementById( '{{ form.NAMEOFCKEDITORFIELD.id_for_label }}' ) );
    event.detail.parameters['{{ form.NAMEOFCKEDITORFIELD.html_name }}'] = element.getEditor().getData();        
})
</script>
<div class="form-group">
{% for field in form %}
        {{ field.label_tag }}:<br />{{ field }}

{% endfor %}    
 </div>
<br>

<div class='htmx-indicator'>Loading...</div>
<div class="text-center">
    <button class='htmx-inverted-indicator' type='submit' hx-post="{% url 'book_update_view_name' book.id %}" hx-target="#{{form.id}}" hx-swap="outerHTML">Save</button>
  </div>

{% if message %}
    <p>{{ message }}</p>
{% endif %}