Сохранение новых строк в форме ввода

Я понимаю, что существует много вопросов, похожих на этот, но все они, похоже, отвечают на обратную сторону: "Как мне отобразить..."

Я могу показать, что я не получаю новые строки из объекта запроса

окружение

django 2.2.1, qunicorn 19.9.0

... работает в образе docker, собранном на базовом образе python 3.7

setup

Предварительно заполнить запись в базе данных:

update api_entitlement set notes= E'line 1\nline2\nline3' where guid='44aa651c-ea98-4990-aa85-d87d21db6043';

.... и подтвердите наличие данных:

select * from api_entitlement where guid='44aa651c-ea98-4990-aa85-d87d21db6043';
  id   |                 guid                 | notes  
-------+--------------------------------------+--------
 14053 | 44aa651c-ea98-4990-aa85-d87d21db6043 | line 1+
       |                                      | line2 +
       |                                      | line3
(1 row)

Фрагмент шаблона, который создает textarea, выглядит следующим образом:

<pre id="{{ entitlement.guid }}_notes">{% if entitlement.notes == '—' or
  entitlement.notes is None %}—{% else %}{{ entitlement.notes }}
  {% endif %}</pre><textarea id="{{ entitlement.guid }}_notes_new"
  type="text" class="form-control" value="{% if entitlement.notes == '—' %}
  -{% else %}{{ entitlement.notes }}{% endif %}" style="display:none">{{
  entitlement.notes }}</textarea>

(есть некоторый javascript, который переключает с display на edit, с <pre> на <textarea>)

а код, который читает форму, выглядит так:

    def get(self, request, *args, **kwargs):
       logger.info(f"notes value is {request.GET}")
       #
       # snip irrelevant code
            #
            value = request.GET.get('notes')
            logger.info(f"notes value is {value}")
            if value != '-' and entitlement.notes != value:
                entitlement.notes = value
            #
            # ... and even more

Используется

Если я просто отображаю страницу, я получаю 3 строки из базы данных, как три отдельные строки - это хорошо.

Если я переключусь в режим редактирования, то получу форму ввода с тремя строками. Я отредактирую данные так, чтобы в строках 2 & 3 были пробелы перед цифрами, и отправлю форму

Строка logger.info регистрирует notes value is <QueryDict: {'notes': ['line 1line 2line 3']}>. .... новые строки были удалены.

Почему?

.... и, что более важно, как их удержать?

У меня был импортирован whitenoise.middleware.WhiteNoiseMiddleware middlewhere, но я его удалил - разницы никакой

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