Django: почему KeyError: 'pk' - PullRequest
       3

Django: почему KeyError: 'pk'

1 голос
/ 13 апреля 2019

Я использую Django 2.1 Я думаю, что я правильно описал ПК, но возникает ошибка. Не могли бы вы сказать мне, почему возникает ошибка и решение?

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"),
]

1 Ответ

0 голосов
/ 13 апреля 2019

Поскольку URL для представления создания не содержит pk.Это параметр для передачи в DetailView, но он должен исходить из самого сохраненного объекта.

def get_success_url(self):
    return reverse('detail', kwargs={"pk": self.object.pk})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...