Как передать два PK через урлы в Django?
Я создал функцию, которая добавляет пользователя в событие, это работает хорошо, но у меня проблемы с функцией, которая удаляет пользователей из события, я не понял, как получить сопровождающего, чтобы владелец мог удалить его.
На данный момент у меня есть следующее:
views.py (Функция, добавляющая пользователя в событие)
@login_required
def request_event(request, pk):
previous = request.META.get('HTTP_REFERER')
try:
post = Post.objects.get(pk=pk)
Attending.objects.create(post=post, attendant=request.user)
messages.success(request, f'Request sent!')
return redirect(previous)
except post.DoesNotExist:
return redirect('/')
(Функция, которая удаляет пользователей с мероприятия, обрабатывается владельцем мероприятия)
@login_required
def remove_attendant(request, pk, id):
previous = request.META.get('HTTP_REFERER')
try:
post = Post.objects.get(pk=pk)
attendant = Attending.objects.get(id=attendance_id)
Attending.objects.filter(post=post, attendant=attendant).delete()
messages.success(request, f'User removed!')
return redirect(previous)
except post.DoesNotExist:
return redirect('/')
Urls.py
path('post/(?P<pk>[0-9]+)/remove_attendant/(?P<attendance_id>[0-9]+)$', views.remove_attendant, name='remove-attendant'),
Любая помощь или комментарий будут очень рады! Спасибо!!!
attendance_id, похоже, не определено в вашем коде.
def remove_attendant(request, pk, attendance_id): должно быть то, что вы вызываете.
Теоретически, вы должны иметь доступ к pk и attendance_id из request.resolver_match.kwargs в любом случае.
Вы можете просто использовать позиционные аргументы в вашем пути к url, нет необходимости в regex. Имена ваших переменных также могут быть описательными, если это поможет (если это часто помогает мне).
path('remove-attendant-view/<post_id>/<attendance_id>/', views.remove_attendant, name='remove_attendant'),
А в файле views.py, что-то вроде:
def remove_attendant(request, post_id, attendance_id):
И где бы вы ни вызывали эту функцию представления, вы должны убедиться, что ваш url содержит эти id и pks в контексте и в порядке, например, что-то вроде:
<a href="{% url 'remove_attendant' post_id=post_id, attendant_id=attendance_id %}">Remove Attendant</a>