Django中如何使用动态字符串作为模型字段名赋值?
解决方法
直接用Python内置的setattr()函数就能实现你要的动态赋值逻辑,代码如下:
json_data = {"prefs":[1,2],"items":[2,3,4]} mo = FormSelector.objects.last() for key, value in json_data.items(): # 可选:先判断key是否是模型的有效字段,避免赋值错误 if hasattr(mo, key): setattr(mo, key, value) # 记得保存修改到数据库 mo.save()
补充说明
setattr(obj, attr_name, value)函数可以动态给对象obj设置名为attr_name的属性,值为value,效果完全等价于直接写obj.attr_name = value。- 加上
hasattr(mo, key)的判断是为了防止json里出现模型不存在的字段名,导致赋值出错;如果你能保证json的键都是模型已有的字段,也可以去掉这个判断。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

