Django 在反向重定向中使用新创建的对象

Posted

技术标签:

【中文标题】Django 在反向重定向中使用新创建的对象【英文标题】:Django using a newly create object in reverse redirect 【发布时间】:2011-04-21 01:02:05 【问题描述】:

我正在尝试从新创建的项目对象中提取 id,以便将用户重定向到包含新项目的页面。现在我得到“'ProjectAddForm'对象没有属性'id'”。

我在网上读到这应该可以,但由于某种原因它不是。

if request.method == 'POST':
        form = ProjectAddForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('project.views.detail', args=(form.id)))

Forms.py

class ProjectAddForm(forms.ModelForm):

    class Meta:
        model = Project

【问题讨论】:

【参考方案1】:

save 方法返回您的模型对象。获取对它的引用,然后您将获得反向重定向所需的“id”。

instance = form.save()
return HttpResponseRedirect(reverse('project.views.detail', instance.id))

【讨论】:

啊,这样做很有意义。我唯一要做的就是在反向 instance.id 之后添加一个 , 并且它可以工作。谢谢!

以上是关于Django 在反向重定向中使用新创建的对象的主要内容,如果未能解决你的问题,请参考以下文章

【Django】路由配置:反向解析、重定向

重定向vs反向django

Django 项目 实现重定向并进行反向解析

ajax请求返回django.urls.exceptions.NoReverseMatch后Django反向和重定向

反向解析与重定向 | Django开发

如何在 Django 视图中检测重定向