当我提交某个CreateView
时,我想继续在另一个CreateView
中创建另一个对象。但是,当我尝试
def get_success_url(self):
return FooView.as_view()(self.request, itempk = self.object.id)
我得到了
ContentNotRenderedError:必须先呈现响应内容 它可以被访问。
我也试过
def get_success_url(self):
return render(FooView.as_view()(self.request, itempk = self.object.id))
给了我
AttributeError:'TemplateResponse'对象没有属性'META'
我很确定我只是以错误的方式解决这个问题,之前我已经做好了,但我很难过。这样做的正确方法是什么?
答案 0 :(得分:2)
您不想调用视图,而是希望将用户重定向到该视图。所以只需使用redirect
函数:
from django.shortcuts import redirect
...
return redirect('foo_view_name', kwargs={'itempk': self.object.id})
答案 1 :(得分:1)
既然你要定义get_success_url
,我会说你只需要像
def get_success_url(self):
# assuming that your FooView urlconf was named "foo_view"
return reverse('foo_view', kwargs={'itempk':self.object.id})