Как я могу перенаправить пользователя на определенный первичный ключ
Добрый вечер всем, Я пишу форум, где есть разные комнаты, в каждой комнате пользователь может оставить комментарий, а также обновить его по мере необходимости. После обновления комментария, я хочу перенаправить пользователя в ту же комнату, где был этот комментарий. Я пробовал:
1.Reverse + HTTPResponseRedirect
def room(request, pk):
room = Room.objects.get(id=pk)
room_messages = room.message_set.all().order_by('created')
participants = room.participants.all()
if request.method == 'POST':
message = Message.objects.create(
user=request.user,
room=room,
body=request.POST.get('body')
)
room.participants.add(request.user)
return redirect('room', pk=room.id)
context = {'room': room, 'room_messages': room_messages,
'participants': participants,}
return render(request, 'base/room.html', context)
@login_required(login_url='login')
def updateMessage(request, pk):
message = Message.objects.get(id=pk)
form = MessageForm(instance=message)
if request.user != message.user:
return HttpResponse('Unable to edit message')
if request.method == 'POST':
form = MessageForm(request.POST, instance=message)
if form.is_valid():
form.save()
return HttpResponseRedirect(
reverse(
"room",
kwargs={
"pk": "13"
}
)
)
return render(request, 'base/message_form.html',{'obj':message, 'form': form})
но получается вернуть пользователя только тогда, когда я вручную пишу id комнаты, в которой находится комментарий. Есть ли способ связать id комментария и id комнаты? Я пытался искать похожий материал и искал похожие проекты на github repos, но я не могу понять, как это сделать, единственное, что я понимаю, это то, что мне нужно как-то связать два первичных ключа, и я не знаю, двигаюсь ли я в правильном направлении. Спасибо за внимание
Вы уже на полпути.
Вы использовали ORM для получения сообщения, но вы не используете его для генерации URL для перенаправления. Вы можете сделать что-то вроде этого:
reverse('room', kwargs={'pk': str(message.pk)})