Django форма очищает пустые места от пробелов

У меня есть модель с текстовым полем:

models.py

class Techtip(models.Model):
    title = models.CharField(max_length=150)
    year = models.PositiveIntegerField()
    year2 = models.PositiveIntegerField()
    make = models.CharField(max_length=30)
    model = models.CharField(max_length=30)
    description = models.TextField(max_length=10000)
    user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
    date_created = models.DateTimeField(auto_now_add=True)
    date_revised = models.DateTimeField(null=True)
    additional_field = models.TextField(max_length=5000, null=True, blank=True)
    additional_field2 = models.TextField(max_length=5000, null=True, blank=True)
    image1 = models.ImageField(upload_to=user_directory_path, null=True, blank=True)
    image2 = models.ImageField(upload_to=user_directory_path, null=True, blank=True)
    image3 = models.ImageField(upload_to=user_directory_path, null=True, blank=True)

    def __str__(self):
        return self.title

Если создать технический совет и дать ему описание:

"Здравствуйте, это первая строка описания.

".

Это вторая строка.

и это строка 3."

При использовании {{techtip.deescription}} в шаблоне я получаю следующее:

"Здравствуйте, Это первая строка описания. Это вторая строка. а это строка 3."

Однако, если открыть форму для редактирования описания, пробелы там есть. Он также правильно отображается в панели администратора.

Вот форма:

forms.py
class TechtipFormModel(forms.ModelForm):
    """This form creates and edits techtips."""
    class Meta:
        model = Techtip
        fields = '__all__'
        exclude = ('user', 'date_revised', 'additional_field', 'additional_field2', 'image1', 'image2', 'image3')

    def __init__(self, *args, **kwargs):
        super(TechtipFormModel, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id = 'id-TechtipForm'
        self.helper.form_method = 'post'
        self.helper.add_input(Submit('submit', 'Submit'))
        self.fields['description'].strip = False

Вот виды для редактирования совета или его отображения. Интервал работает правильно при использовании формы редактирования, но не при отображении техподсказки.

views.py
@login_required
def techtip_detail(request, pk):
    # display techtip details. In template: if user is the creator of Techtip they can update/delete
    tech_id = pk
    user = request.user
    techtip = Techtip.objects.get(pk=tech_id)
    context = {'techtip': techtip}
    return render(request, 'techtips/view_techtip.html', context)


class TechtipEdit(LoginRequiredMixin,
                  UpdateView,):
    model = Techtip
    form_class = TechtipFormModel
    template_name = 'techtips/edit_techtip.html'

    def get_success_url(self):
        return reverse('manage_techtips')

    def dispatch(self, request, *args, **kwargs):
        # check for user logged in
        # check for user permission:
        # Take pk from kwargs
        pk = kwargs.get('pk')  # example
        # Take user from request
        user = request.user
        # check permission
        try:
            Techtip.objects.get(pk=pk, user=user)
            return super(TechtipEdit, self).dispatch(request, *args, **kwargs)
        except Techtip.DoesNotExist:
            return HttpResponse(status=403)

и вот шаблоны!

view_techtip.html
{% extends "techtips/base.html" %}
{% block body %}
<div class="row">
    <div class="col-md-12">
        <div class="container-fluid" align="left">
        <div id="punchlist">
           <h3 style="margin-bottom: 0px;">Title:</h3>{{ techtip.title }}<br>
            <h3 style="margin-bottom: 0px; margin-top: 20px;">Make:</h3> {{ techtip.make }}<br>
            <h3 style="margin-bottom: 0px; margin-top: 20px;">Model:</h3> {{ techtip.model }}<br>
            <h3 style="margin-bottom: 0px; margin-top: 20px;">Beginning Year:</h3> {{ techtip.year }}<br>
            <h3 style="margin-bottom: 0px; margin-top: 20px;">Ending Year:</h3> {{ techtip.year2 }}<br>
            <h3 style="margin-bottom: 0px; margin-top: 20px;">Description:</h3> {{ techtip.description }}<br>
        </div>
        </div>
    </div>
</div>
{% if techtip.user.id == user.pk or request.user.is_superuser == TRUE %}
<br>
<form method="GET" action="{% url 'edit_techtip' techtip.pk %}">
    <span class="techtip-button-1">
        <button type="submit"  value="EDIT">Edit</button>
    </span>
</form>
{% endif %}
{% if request.user.is_superuser == TRUE %}
<form method="POST" action="{% url 'delete_techtip' techtip.pk %}">
    {% csrf_token %}
    <span class="techtip-button-1">
        <button type="submit"  value="DELETE">Delete</button>
    </span>
</form>
{% endif %}
<br><br>
<br>
{% if techtip.user.id != user.pk %}
Author: {{techtip.user}}
{% endif %}
{% if techtip.user.id == user.pk %}
Author: You
{% endif %}
{% endblock %}

и

edit_techtip.html
{% extends 'techtips/base.html' %}
{% block body %}
{% load crispy_forms_tags %}
{% crispy form form.helper %}
{% endblock %}

Заранее спасибо!

Я провел небольшое исследование и добавил

self.fields['description'].strip = False

в класс формы, но потом понял, что это не поможет, потому что этот класс формы не имеет части передачи объекта в шаблон и использования языка шаблонов Django.

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