我必须在var input_val = span.siblings('input').val();
中将模型的值从旧值更改并保存为新值。用户单击图标以编辑值,然后再次单击图标接受此值。我使用带有PUT方法的AJAX请求来传递带有编辑ID的该值。现在我得到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)
edit-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) {
}
});
});
这个问题是我的问题的延续:Wait until user click a span then trigger AJAX request
我感谢每一个建议。