Редактирование данных
415
При вызове
save()
мы включаем аргумент
commit=False
для того, чтобы создать
новый объект записи и сохранить его в
new_entry
, не сохраняя пока в базе данных.
Мы присваиваем атрибуту
topic
объекта
new_entry
тему, прочитанную из базы дан-
ных в начале функции
, после чего вызываем
save()
без аргументов. В результате
запись сохраняется в базе данных с правильной ассоциированной темой.
В точке
пользователь перенаправляется на страницу темы. При вызове
reverse()
должны передаваться два аргумента: имя схемы URL, для которой
генерируется URL-адрес, и список аргументов со всеми аргументами, которые
должны быть включены в URL. Список аргументов содержит всего один элемент
topic_id
. Вызов
HttpResponseRedirect()
перенаправляет пользователя на стра-
ницу темы, для которой была создана запись, и пользователь видит новую запись
в списке записей.
Шаблон new_entry
Как
видно из следующего кода,
шаблон
new_entry
похож на шаблон
new_topic
:
new_entry.html
{% extends "learning_logs/base.html" %}
{% block content %}
{{ topic }}
Add a new entry:
{% endblock content %}
В начале страницы выводится тема
, чтобы пользователь мог видеть, в какую тему
добавляется новая запись. Тема также служат ссылкой для возврата к основной
странице этой темы.
Аргумент
action
формы включает значение
topic_id
из URL, чтобы функция
представления могла связать новую запись с правильной темой
. В остальном
этот шаблон почти не отличается от
new_topic .html
.
Создание ссылки на страницу new_entry
Затем необходимо создать ссылку на страницу
new_entry
на каждой странице темы:
topic.html
{% extends "learning_logs/base.html" %}
{% block content %}
Topic: {{ topic }}