Мне нужно изменить и сохранить значение для моей модели со старого значения на новое в var input_val = span.siblings('input').val();
. Пользователь щелкает значок, чтобы отредактировать значение, затем он принимает это значение, снова щелкая значок. Я использую запрос AJAX с методом PUT, чтобы передать это значение с идентификатором редактирования. Сейчас я получаю PUT http://127.0.0.1:8000/edit/2/ 400 (Bad Request)
. Есть ли у вас лучшие варианты для передачи / изменения значений из строки в существующую модель?
views.py
@api_view(['DELETE', 'PUT'])
def contact_detail(request, pk, format=None):
try:
contact = Contact.objects.get(pk=pk)
except Contact.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'DELETE':
contact.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
elif request.method == 'PUT':
serializer = ContactSerializer(contact, data=request.data)
if serializer.is_valid():
serializer.save()
# messages.success(request, f"Pomyślnie edytowano kontakt")
return redirect('address_book:contact_list')
else:
# messages.error(request, "Coś poszło nie tak.")
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
редактировать-contact.js
$('.clickable-check-icon').on('click',function(e){
e.preventDefault();
var span = $(this);
var input = span.siblings('input');
var input_val = span.siblings('input').val();
var edit_id = span.closest('tr').data('contact-id');
// var td_id = span.closest('td').attr('id');
input.prop('disabled', true);
span.siblings(".clickable-edit-icon").show();
span.hide();
$.ajax({
url: 'edit/'+edit_id+'/',
method: 'PUT',
data: JSON.stringify(input_val),
contentType:'application/json',
dataType: 'json',
error: function(result){},
success: function(result) {
}
});
});
Этот вопрос является продолжением моей проблемы с этой проблемы: Подождите, пока пользователь не щелкнет диапазон, а затем вызовите запрос AJAX
Я ценю каждый совет.