django 怎么根据字段不同插入数据 表述不清,请看正文

伪代码

class TABLE(models.Model):
    itemA = models.FloatField(default=0)
    itemB = models.FloatField(default=0)

接收到json串

{
'itemA':100,
'itemB':200
}

我后台接收到数据之后。
怎么根据传来字典的对应关系,给相应的字段插入数据呢?

django的ORM,默认支持的是

tableObj = TABLE.objects.id(id=1)
tableObj.itemA = value

我想写成下面这种,可是不好使额。不支持额。

# data为接口接收到的数据
for key,value in data:
    tableObj.key = value
tableObj.save()

现在这么写,超级丑。。。

for key,value in data:
    if key == "itemA":
        tableObj.itemA= value
    elif key == "itemB":
        tableObj.itemB= value
tableObj.save()

请教各位django大神,怎么写优雅点呢。。。

阅读 4.1k
3 个回答

插入:

tableObj = TABLE.objects.create(**data)

插入时也可以写成:

tableObj = TABLE(**data)
tableObj.save()

更新字段:

for key, value in data.iteritems():
    setattr(tableObj, key, value)
tableObj.save()

重点是掌握内置函数: getattr, setattr, delattr 的使用. 更多内置函数

多看点一些优秀框架的代码,就能够掌握一些好的使用习惯。

for key, val in data.items():
    if hasattr(tableObj, key):
        setattr(tableObj, key, val)
tableObj.save()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题