如何使用表达式作为关键字

时间:2017-02-15 14:12:51

标签: python django django-models django-queryset

我想通过迭代一个对象数组在模型/表的单个列中创建一个条目。对象数组是这样的:

arr = [
       { "field_name" : "email", "field_value" : "abc@abc.com" },
       { "field_name" : "name", "field_value" : "Abc Xyz" },
       { "field_name" : "gender", "field_value" : "M" }
      ]

我想要像这样保存数据:

| **email**         | **name**      | **gender** |
| abc@abc.com   | Abc Xyz   | M      |

假设我有一个名为“model_name”的模型,那么我写的代码是这样的:

modelObject = model_name()

for data in arr:
     modelObject( data['field_name'] = data['field_value'] )

modelObject.save()

我希望将这些数据保存在单行中,因为数据对应于单个列。但是我写的代码是“关键字不能是表达式”错误在行:

modelObject( data['field_name'] = data['field_value'] )

有人能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以将数据放入字典中,并使用解包将它们传递给模型类:

for data in arr:
    obj = modelObject(**{data['field_name']: data['field_value']})
    obj.save()

请记住添加对新创建对象的引用,并使用引用将每个对象保存在for循环中。

答案 1 :(得分:0)

您应该将arr转换为字段名称和值的字典,然后将其解压缩:

obj = modelObject(**{data['field_name']: data['field_value'] for data in arr})
obj.save()
相关问题