【问题标题】:How do I append data to a many-to-many field using Ajax?如何使用 Ajax 将数据附加到多对多字段?
【发布时间】:2019-11-29 02:43:46
【问题描述】:

我正在尝试使用 ajax 更新用户字段。我使用rest-framework为用户模型创建了一个APIView。用户模型包含一个名为“favorite_entries”的多对多字段,下面的代码我需要事先在 JS 中获取所有字段数据并附加新数据并调用 put 请求,这对我来说似乎是错误的。

views.py:

class CurrentAuthorView(APIView):
    permission_classes = (permissions.IsAuthenticated, )
    http_method_names = ['get', 'put']

    def put(self, request):
        serializer = AuthorSerializer(request.user, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def get(self, request):
        serializer = AuthorSerializer(request.user)
        return Response(serializer.data)

javascript:

$("#favorite_entry-btn").on("click", function () {
    let entry_id = $(this).attr("data-entry-id");

    $.ajax({
        url: '/api/v1/author/',
        type: 'PUT',
        data: "favorite_entries=3",
        success: function (data) {
            alert('success');
        },
        error: function (err) {
            console.log(err);
        }
    });

});

我希望在字段中附加主键“3”的条目,但它会删除所有以前的数据。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    数据属性应该是键值格式的Javascript对象。

    $("#favorite_entry-btn").on("click", function () {
        let entry_id = $(this).attr("data-entry-id");
    
        $.ajax({
            url: '/api/v1/author/',
            type: 'PUT',
            data: { favorite_entries: 3},
            success: function (data) {
                alert('success');
            },
            error: function (err) {
                console.log(err);
            }
        });
    
    });
    

    【讨论】:

      猜你喜欢
      • 2015-05-17
      • 2011-10-13
      • 2020-12-17
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多