перенаправление на созданный объект после отправки формы

#django

Вопрос:

Цель: Перенаправить на «журнал сборки» после отправки формы

Вид:

 @login_required
def buildLogCreate(request,  pk):

    post = Post.objects.get(pk=pk)
   
    if request.user.id != post.author_id:
        raise PermissionDenied()

    currentUser = request.user
    form = BuildLogForm()
    if request.method == 'POST':
        form = BuildLogForm(request.POST, request.FILES)
        if form.is_valid():
            formID = form.save(commit=False)
            formID.author = request.user
            formID.post_id = pk
            formID.save()
            return redirect('build-log-view', formID.pk)
            
    context = { 'form':form,  }

    return render(request, 'blog/buildlog_form.html', context)
 

Настройка структуры URL-адреса-post — >журнал сборки(подзаголовок), т. е.: /post/118/журнал сборки/69/

Форма успешно отправлена, но я получаю ошибку NoReverseMatch at /post/118/build-log-form/ Reverse for 'build-log-view' with arguments '(69,)' , что меня смущает, так это то, что URL-адрес все еще находится в форме публикации, а не build log view в аргументе, но 69 это правильный идентификатор журнала сборки, поэтому он должен работать.

url-адрес для перенаправления на

 path('post/<int:pk>/build-log/<int:pkz>/', views.BuildLogDisplay, name='build-log-view'),
 

Комментарии:

1. Можете ли вы поделиться шаблоном URL-адреса, на который вы хотите перенаправить?

2. @WillemVanOnsem добавлено!

Ответ №1:

Шаблон URL-адреса имеет два параметра: первичный ключ объекта post и первичный ключ журнала сборки.

Таким образом, вы можете передать это с:

 return redirect('build-log-view', pk, formID.pk) 

или с именованными параметрами:

 return redirect('build-log-view', pk=pk, pkz=formID.pk)