尝试使用json加载数据后从django模型创建一个对象,但我得到'TypeError:__ init __()关键字必须是字符串'

时间:2013-06-10 20:53:24

标签: django json unicode models

我从网站的API检索数据并使用json.loads(some_data)对它们进行反序列化。 Json返回一个字典,在每个键和值之前包含'u':

data = {u'y_coordinate': u'1902125', u'case_number': u'HW301956', u'domestic': False}

现在我想通过执行以下操作从Django模型中实例化一个对象:

obj = Model(**data)

但是,我得到'TypeError: init ()关键字必须是字符串' 所以我想知道问题是来自键和值前面的'u',如果是,我怎么能摆脱它来创建对象呢?

据我所知,我可以编写一个循环数据的函数,并在遇到角色时摆脱'u',但是有更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

您需要遍历字典,只要它是unicode,就可以对密钥进行编码。

>>> {key.encode('utf8') if isinstance(key, unicode) else key:value for (key, value) in data.iteritems()}
{'y_coordinate': u'1902125', 'domestic': False, 'case_number': u'HW301956'}