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

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

view:

@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->buildlog(subpost) т.е.: /post/118/build-log/69/

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

url to be redirected to

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

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

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

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

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

return redirect('build-log-view', pk=pk, pkz=formID.pk)
Вернуться на верх