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

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

首先通过表名变量获取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中如何根据前端传回的参数动态更新数据库记录?)