尝试将列表保存到Google数据存储时,我遇到了一个错误:
raise BadValueError('Property %s must be a list' % self.name)
BadValueError: Property contactCountry must be a list
contactCountry被创建为列表:
contactCountry = list()
并且后续添加了:
contactCountry.append(xmlDoc.getElementsByTagName('country')[0].childNodes[0].nodeValue)
针对这个具体的例子,虽然只有一个元素,但它仍然是一个列表……但当我尝试保存时,却出现了错误。有什么想法吗?
输出:
logging.info(contactCountry)
logging.info(type(contactCountry))
Are:
INFO 2013-12-02 16:38:27,349 downloadAndUpdate.py:72] [u'United States']
INFO 2013-12-02 16:38:27,349 downloadAndUpdate.py:73] <type 'list'>
当我遇到这个错误时,我完全被卡住了,谢谢!
编辑:
以下是我定义和分配contactCountry的方式:
Database = models.Database() #construct Database object
Information = Database.get_or_insert(Identifier)
Information.contactCountry = contactCountry
在同一目录下,我的models.py文件的相关部分具有以下结构:
class Database(db.Model):
contactCountry = db.ListProperty(str)
编辑2:
我最终解决了问题——contactCountry原来是以db.StringProperty()类型存储在我的数据存储中,并且已经填充了值。我想将contactCountry更改为列表,因此我将models.py文件更改为db.ListProperty(str),这时我开始看到错误。我决定尝试只清除我的数据存储:
$ dev_appserver.py --clear_datastore [myappname]
并重新构建它。在清除我的数据存储并重试之后,完全相同的代码再次奇迹般地工作了。
contactCountry
分配给你正在更新的实体的? - Daniel Roseman