Как перенаправить на вновь созданный объект в Django без аргумента общего представления post_save_redirect - PullRequest
1 голос
/ 22 декабря 2009

Я пытаюсь перенаправить пользователя на вновь созданный объект object.get_absolute_url() после сохранения формы. Я не использую общее представление, поэтому я не могу использовать аргумент post_save_redirect. Соответствующая часть view выглядит так:

if form.is_valid():
    form.save()
    return HttpResponseRedirect(reverse('story_detail', args=(story.user, story.id)))

Теперь, как мне получить объект story между form.save() и HttpResponseRedirect, чтобы я мог выполнить поиск reverse?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2009
Метод

A ModelForm возвращает вновь созданный экземпляр модели. В вашем случае это означает, что вы должны быть в состоянии работать со следующим:

if form.is_valid():
    story = form.save()
    return HttpResponseRedirect(reverse('story_detail', args=(story.user, story.id)))
1 голос
/ 05 июня 2018

2018 Django 2 обновление:

from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.urls import reverse

# inside def
  if form.is_valid():
    story = form.save()
    messages.success(request, 'Story created successfully!')

    return redirect(reverse('story_detail', kwargs={'story':story.id}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...