Javascript 使用Ajax更新特定对象中单个字段的正确方法

Javascript 使用Ajax更新特定对象中单个字段的正确方法,javascript,jquery,ajax,django,django-rest-framework,Javascript,Jquery,Ajax,Django,Django Rest Framework,是否可以使用Ajax更新特定对象中的单个字段? 我有一个包含大量记录的postgres表,我想使用jqueryajax请求来更新该表中特定对象中的单个字段。这可以在不替换或重新发布整个记录的情况下完成吗 我想要这个(给我一个400错误的请求): 与此相反(有效): *注意:我使用的是Django,可以在views.py中轻松完成此更新,但我希望使用Javascript避免页面刷新 既然我也在使用Django Rest框架,那么创建一个特定于我要更新的字段的新端点是否更好?示例:/api/DB\u

是否可以使用Ajax更新特定对象中的单个字段? 我有一个包含大量记录的postgres表,我想使用jqueryajax请求来更新该表中特定对象中的单个字段。这可以在不替换或重新发布整个记录的情况下完成吗

我想要这个(给我一个400错误的请求):

与此相反(有效):

*注意:我使用的是Django,可以在views.py中轻松完成此更新,但我希望使用Javascript避免页面刷新

既然我也在使用Django Rest框架,那么创建一个特定于我要更新的字段的新端点是否更好?示例:
/api/DB\u表/对象\u id/Field\u更新


谢谢

是的,您可以使用补丁HTTP方法来实现这一点,在REST术语中称之为部分更新。默认情况下,它已经在DRF中实现,因此您不必为此重写任何方法。这与PUT相反,PUT是一个完整的更新,需要您向请求中添加所有必需的字段,除非您重写默认行为

我认为您可以以最简单的形式使用Django RestFramework库提供的
RetrieveUpdateAppiview
通用视图

这将公开以下API:

获取
返回
对象

补丁
更新对象数据(
部分
,按照惯例)

PUT
更新对象数据

参考:

如果您还希望
支持删除
对象,则可以使用
RetrieveUpdatedStroyapiView
,这将支持
删除
来删除对象


参考资料:

是的,您可以这样做-它需要在您的服务器中处理在您的路线上设置一个PUT方法来更新课程!这太明显了,我早该知道的。我将让Ajax ping端点,并在我的views.py文件(处理端点逻辑的地方)中让python更新特定对象中的单个字段。谢谢你在我的大脑放屁时的帮助:)@charlietfl它实际上是一块没有放的补丁
$.ajax({
    type: "POST",
    url: '/api/MyEndPoint/',
    data: {
        id: Specific_Record,
        Field_To_Update: New_Value, 
    }, 
    success: function(data){
        console.log( 'success, server says '+data);  
    }
});
$.ajax({
    type: "POST",
    url: '/api/MyEndPoint/',
    data: {
        id: Specific_Record,
        Field_To_Update: New_Value, 
        Field1: SameAsBefore, 
        Field2: SameAsBefore,  
        Field3: SameAsBefore,  
        ...  
        Field16: SameAsBefore, 
    }, 
    success: function(data){
        console.log( 'success, server says '+data);  
    }
});