Чтобы выбрать что-то для сохранения в сеансе, я бы просто сделал
class SelectTranscriptView(SingleObjectMixin, View):
model = Transcript
def post(self, request, *args, **kwargs):
object = self.get_object()
request.session['selected_transcript'] = object.id
return redirect(...)
Это представление принимает только POST, поскольку запросы GET должны быть идемпотентными, то есть они не должны изменять какое-либо состояние. Установка значения сеанса определенно изменяет состояние. Это означает, что вам нужно будет использовать форму (или функцию JavaScript) для отправки данных POST на URL-адрес, к которому вы это подключили.
Что еще более важно: Установка чего-либо в сеанс вовсе не обязательно хорошая идея. Представьте, что опытный пользователь решает открыть несколько вкладок на вашем сайте и пытается выбрать одну расшифровку для одной вкладки, а другую - для другой вкладки. Это будет невозможно, если вы сохраните выбранную вещь в сеансе! Вместо этого я бы разработал такие вещи, чтобы идентификатор редактируемого или просматриваемого объекта всегда был в URL-адресе (в любом случае, как происходит с DetailViews и им подобными).