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.