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

#django

Вопрос:

Я понимаю, что есть много вопросов, подобных этому, но все они, похоже, отвечают на обратную сторону: «Как мне отобразить…»

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

Окружающая среда

джанго 2.2.1, куникорн 19.9.0

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

установка

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

 update api_entitlement set notes= E'line 1nline2nline3' 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, который переключается с отображения на редактирование, с <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 строки из базы данных в виде трех отдельных строк — это хорошо.

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

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

Почему?

…. и, что еще более важно, как мне их сохранить?

Я действительно whitenoise.middleware.WhiteNoiseMiddleware импортировал промежуточное место, но я удалил его — это не имело никакого значения

Комментарии:

1. вы используете js для получения значения textarea?

2. @NalinDobhal — как упоминалось в вопросе, я получаю значение с value = request.GET.get('notes') ….. но даже дамп значений logger.info(f"notes value is {request.GET}") не показывает новых строк