如何从保存的模型中用pk填充成功网址?

3 投票
1 回答
2949 浏览
提问于 2025-04-29 11:23

我用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)中获取主键。

撰写回答