CKEditor в django отображается как textarea, когда я сохраняю его из формы

У меня есть форма с CKEditor и мне нужно сохранить ее в базу данных. Когда я сохраняю ее, она почему-то сохраняет ее с помощью textarea, как это:

<div> 
<label for="id_body">Body:</label> <div class="django-ckeditor-widget" data-field-id="id_body" style="display: inline-block;"> 
<textarea name="body" cols="40" rows="10" required id="id_body" data-processed="0" data-config="{&quot;skin&quot;: &quot;moono-lisa&quot;, &quot;toolbar_Basic&quot;: [[&quot;Source&quot;, &quot;-&quot;, &quot;Bold&quot;, &quot;Italic&quot;]], &quot;toolbar_Full&quot;: 
[[&quot;Styles&quot;, &quot;Format&quot;, &quot;Bold&quot;, &quot;Italic&quot;, &quot;Underline&quot;, &quot;Strike&quot;, &quot;SpellChecker&quot;, &quot;Undo&quot;, &quot;Redo&quot;], 
[&quot;Link&quot;, &quot;Unlink&quot;, &quot;Anchor&quot;], [&quot;Image&quot;, &quot;Flash&quot;, &quot;Table&quot;, &quot;HorizontalRule&quot;], [&quot;TextColor&quot;, &quot;BGColor&quot;], 
[&quot;Smiley&quot;, &quot;SpecialChar&quot;], 
[&quot;Source&quot;]], &quot;toolbar&quot;: &quot;Full&quot;, &quot;height&quot;: 291, &quot;width&quot;: &quot;100%&quot;, &quot;filebrowserWindowWidth&quot;: 940, &quot;filebrowserWindowHeight&quot;: 725, &quot;language&quot;: 
&quot;en-us&quot;, &quot;versionCheck&quot;: false}" data-external-plugin-resources="[]" 
data-id="id_body" data-type="ckeditortype">&lt;p&gt;fhdgh&lt;/p&gt; 
</textarea> </div> </div> 

Но когда я просто нажимаю сохранить из панели администратора, все работает отлично

form.html:

 <div class="form-group">
  {{form.as_p}}
              {{form.media}}  
 </div>

forms.py

class PostForm(forms.Form):
    body = forms.CharField(widget = CKEditorWidget())
    class Meta:
        model = Document
        fields = 'body'

models.py

from django.db import models
from ckeditor.fields import RichTextField
from simple_history.models import HistoricalRecords

class Document(models.Model):

    class DocumentStatus(models.TextChoices):
        ACTIVE = 'active', 'Active'
        ARCHIVED = 'archived', 'Archived'

    header = models.CharField(max_length = 32)
    body = RichTextField()
    category = models.ForeignKey(Category, on_delete = models.CASCADE)
    timestamp = models.DateTimeField(auto_now_add = True)
    status = models.CharField(max_length = 10, choices = DocumentStatus.choices, default = DocumentStatus.ACTIVE)
    history = HistoricalRecords()

    def __str__(self):
        return self.header

views.py

def add_document_view(request):
    categories = Category.objects.all()
    languages = get_language_choices()
    context = {"allCategories":categories, "form":PostForm, "languages":languages}
    return render(request, "documents/add-document.html", context)

def add_document(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        header = request.POST["header"]
        category_id = request.POST["category"]
      
        category = Category.objects.get(id = category_id)
        f = Document(header = header,body = form, category = category)
        f.save()
        return HttpResponseRedirect(reverse("core:category", kwargs={"id":category_id}))

но когда я сохраняю его из админ панели все нормально

Как показать обычный текст вместо текстовой области?

Проблема была в том, что я не очистил данные из формы. Поэтому после исправления код выглядит следующим образом:


def add_document(request):
    form = PostForm(request.POST)
    if request.method == "POST" and form.is_valid():
        body = form.cleaned_data['body']
        header = request.POST["header"]
        category_id = request.POST["category"]
        category = Category.objects.get(id = category_id)
        f = Document(header = header,body = body, category = category)
        f.save()
        return HttpResponseRedirect(reverse("core:category", kwargs={"id":category_id}))

Вернуться на верх