Итоги
435
@login_required
def new_topic(request):
"""Определяет новую тему."""
if request.method != 'POST':
#
Данные не отправлялись; создается пустая форма.
form = TopicForm()
else:
#
Отправлены данные POST; обработать данные.
form = TopicForm(request.POST)
if form.is_valid():
new_topic = form.save(commit=False)
new_topic.owner = request.user
new_topic.save()
return HttpResponseRedirect(reverse('learning_logs:topics'))
context = {'form': form}
return render(request, 'learning_logs/new_topic.html', context)
...
При первом вызове
form.save()
передается аргумент
commit=False
, потому что
новая тема должна быть изменена перед сохранением в базе данных
. Атрибуту
owner
новой темы присваивается текущий пользователь
. Наконец, мы вызываем
save()
для только что определенного экземпляра темы
. Теперь тема содержит
все
обязательные данные, и ее сохранение пройдет успешно.
Вы сможете добавить сколько угодно новых тем для любого количества разных
пользователей. Каждому пользователю будут доступны только его собственные
данные, какие бы операции он ни пытался выполнять: просмотр данных, ввод
новых или изменение существующих данных.
Достарыңызбен бөлісу: