如何从保存的模型中用pk填充成功网址?
我用CompanyCreateView创建了一个新的模型。在用f.save()
保存之后,我希望浏览器能加载成功的链接。
url(r'^comp/(?P<pk>\w+)/$', CompanyDetailView.as_view(), name="profile"),
这是我的CreateView。
class CompanyCreateView(CreateView):
model = Company
form_class = CompanyForm
success_url = "/comp/???pk???"
def form_valid(self, form):
f = form.save(commit=False)
f.submitter_id = 99 # dont know how to remove the submitter, its not set in the model
f.save()
return super(CreateView, self).form_valid(form)
def get_success_url(self, **kwargs):
return reverse("profile", kwargs={'pk': self.request.pk})
我该如何使用args参数来返回pk
呢?
1 个回答
11
def get_success_url(self, **kwargs):
# obj = form.instance or self.object
return reverse("profile", kwargs={'pk': self.object.pk})
你在请求对象上期待有一个主键,这样做没有意义。你应该从实例(self.object)中获取主键。