我正在使用Django 2.1 我认为我已经正确描述了pk,但是发生了错误。您能告诉我为什么会发生错误以及解决方法吗?
KeyError at /create/
'pk'
根据该错误,“ get_success_url”似乎存在问题,但我不知道为什么。
#views.py
class MemoCreateView(LoginRequiredMixin, CreateView):
model = Memo
form_class = MemoForm
def form_valid(self, form):
obj = form.save(commit=False)
obj.created_by = self.request.user
return super(MemoCreateView, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('detail', kwargs={"pk": self.kwargs['pk']})
#urls.py
urlpatterns = [
path('<int:pk>', MemoDetailView.as_view(), name="detail"),
path('create/', MemoCreateView.as_view(), name="create"),
]
答案 0 :(得分:0)
因为创建视图的URL不包含pk
。这是传递给DetailView的参数,但它必须来自保存的对象本身。
def get_success_url(self):
return reverse('detail', kwargs={"pk": self.object.pk})