django request.POST字段名称替换

Ric*_*ich 1 django

我正在使用ajax将数据发送到django视图,数据通过request.POST进入.我发布了需要更新的模型字段以及模型值.我只需要知道如何使用我从request.POST ['field_name']中提取的字段名称变量,这样我就可以在模型中设置字段了.这是我的代码.

field_name = request.POST["field_name"]
field_value = request.POST["field_value"]

member_id = get_member_session(request).id
try:
    member = Members.objects.get(id=member_id)
except:
    status="ERROR-USER-DOES-NOT-EXIST"
    return json_status(status)

try:
    member.field_name=field_value
    member.save()
    return json_status('OK')
except:
    status = "USER_SAVE_ERROR"
    return json_status(status)
Run Code Online (Sandbox Code Playgroud)

member.field_name显然不对.我需要使用eval(field_name)或类似的东西吗?如果可能的话,我不愿意.

非常感谢

丰富

Ale*_*dal 5

使用setattr,允许您在对象上设置变量属性:

try:
    member._meta.get_field(field_name)
except member.FieldDoesNotExist:
    # return something to indicate the field doesn't exist
    return json_status('USER_FIELD_ERROR')

setattr(member, field_name, field_value)
member.save()
return json_status('OK')
Run Code Online (Sandbox Code Playgroud)

编辑:我更新使用model._meta.get_field,因为这是一个更好的方法.在这个答案中提到了另一个问题.