Изменить значение модели с помощью метода AJAX put - Django-rest-framework - PullRequest
0 голосов
/ 23 мая 2019

Мне нужно изменить и сохранить значение для моей модели со старого значения на новое в 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

Я ценю каждый совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...