Для этого вам нужно использовать get () вместо filter () . Get возвращает один объект, тогда как фильтр возвращает набор запросов
contact = Contact.objects.get(phone_book__id=phone_book_id)
И в шаблоне вам не нужно использовать forloop {{contact.first_name}}
даст результат для вас
РЕДАКТИРОВАТЬ: вы сохраните данные с запросом POST, поэтому вам нужно обрабатывать также запрос POST, и есть многоо вещах, которые вам нужно знать, пожалуйста, прочитайте документы
и измените свой взгляд следующим образом
def change_contact(request, contact_id):
contact = Contact.objects.get(pk=contact_id)
form = AddToPhoneBookForm(instance=contact)
if request.method == 'POST':
form = AddToPhoneBookForm(request.POST,instance=contact)
if form.is_valid():
obj=form.save(commit=False)
obj.user = request.user
obj.save()
return redirect('some-path')
context = {
'form': form,'contact':contact
}
return render(request, "CallCenter/add_to_phone_book.html", context)