Django CreateView перенаправить на UpdateView, если уже создан объект - PullRequest
0 голосов
/ 06 июня 2019

Я пытался проверить (используя функцию get ()) внутри CreateView.поэтому, когда мы пытаемся получить доступ к URL-адресу CreateView, это представление проверит, был ли объект создан.если да, он будет перенаправлен на URL объекта UpdateView.но проблема в том, что я не знаю, как изменить его.

urls.py
app_name = 'product'
urlpatterns = [
    url(r'^$', pglist, name='list'),
    url(r'^create/$', pcreate, name='create'),
    url(r'^(?P<slug>[\w-]+)/$', pdetail, name='detail'),
    url(r'^(?P<slug>[\w-]+)/update/$', pupdate, name='update'),
    url(r'^redire/$', ered, name='redire'),





views.py
CreateView class
    def get(self, *args, **kwargs):
        if self.model.objects.get(user=self.request.user):
            return redirect("product:update", kwargs={'slug': ??? I HAVE NO IDEA HOW TO DOING THIS PART ???slug})
        else:
            return redirect("product:create")

, если я изменю строку на ==> return redirect ("pages: update"), URL-адрес CreateView покажет

NoReverseMatch at /create/
Reverse for 'update' with no arguments not found. 1 pattern(s) tried: ['(?P<slug>[\\w-]+)/update/$']

Итак, что это должно быть?

return redirect("product:update", kwargs={'slug': ??? I HAVE NO IDEA HOW TO DOING THIS PART ???slug})

1 Ответ

0 голосов
/ 06 июня 2019

Ну, я бы рискнул предположить, что у вас есть поле slug на вашей модели, и вы могли бы предоставить слаг для kwargs метода reverse следующим образом:

return redirect(
    "product:update", 
    kwargs={'slug': self.model.objects.get(user=self.request.user).slug}
)
...