一旦用户发表了有效的帖子并按下了“帖子”,我希望他们被带到有效的帖子中。我用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
但是没有达到预期的结果。
有人有什么建议吗?
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)
答案 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)