转到新创建的帖子

时间:2020-05-06 18:26:17

标签: python django python-3.x forms

一旦用户发表了有效的帖子并按下了“帖子”,我希望他们被带到有效的帖子中。我用return redirect('post-detail', 18)进行了测试。此刻,一旦创建了有效的帖子,就会加载ID为18的帖子。

我正在尝试获取新创建帖子的ID。我要写的是return redirect('post-detail', id of newly created post)

此行form.instance.author = self.request.user有效时,我尝试了form.instance.id 但是没有达到预期的结果。

有人有什么建议吗?

enter image description here

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['title', 'content']

def form_valid(self, form):
    form.instance.author = self.request.user

    return redirect('post-detail', 18)

    #print (form.instance.id)
    return redirect('post-detail', form.instance.id)

1 个答案:

答案 0 :(得分:1)

您没有保存表格,因此这意味着该对象当时还没有主键。通常,表单以基本的form_valid方法保存。

此外,您最好覆盖get_success_url,因为这是您应该“计算” URL重定向到的地方:

from django.urls import reverse

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['title', 'content']

    def get_success_url(self):
        return reverse('post-detail', args=[self.object.pk])

    def form_valid(self, form):
        form.instance.author = self.request.user
        # will save the form and redirect to the success_url
        return super().form_valid(form)