美文网首页
在django中如何根据前端传回的参数动态更新数据库记录?

在django中如何根据前端传回的参数动态更新数据库记录?

作者: NeXTCDO | 来源:发表于2017-07-27 09:42 被阅读50次

    表名,字段,新的值都是前端传来的。

    首先通过表名变量获取model,使用get_model方法

    接着通过id获取要更新的记录obj

    然后使用setattr(obj, fieldname,fieldvalue)函数给记录更新字段值。

    这样就避免了后端写一些重复的更新字段语句。

    上代码

    #目前django是1.8版本,1.9以后导入get_model方法有更改
    try:
        from django.apps import apps
        get_model=apps.get_model
    except ImportError:
        from django.db.models.loading import get_model
    
    
    def editTableInfo(request):
        if request.method =='POST':
            try:
                editType = request.POST.get('editType', None)
                newValue = request.POST.get('newValue', None)
                objId = request.POST.get('objId', None)
                tableName = request.POST.get('tableName',None)
                tableModel = get_model('inzhua_main', tableName)
                obj = tableModel.objects.get(id=objId)
                result = dynamicUpdateObjFields(obj=obj, fieldName=editType,
                                                fieldValue=newValue)
                return HttpResponse(result)
            except Exception as e:
                print(e)
                return HttpResponse('网络出错!')
    
    def dynamicUpdateObjFields(obj=None,fieldName=None,fieldValue=None):
        print obj,fieldName,fieldValue
        try:
            if obj and fieldName and fieldValue:
                setattr(obj,fieldName,fieldValue)
                obj.save()
                return '修改成功'
        except Exception as e:
            print e
        return '修改失败'
    
    

    相关文章

      网友评论

          本文标题:在django中如何根据前端传回的参数动态更新数据库记录?

          本文链接:https://www.haomeiwen.com/subject/hboakxtx.html