无法将列表保存到Google App Engine上的db.ListProperty()

时间:2013-12-02 16:42:18

标签: python google-app-engine google-cloud-datastore

尝试将列表保存到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))

是:

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)

EDIT2:

我能够让它工作 - contactCountry最初在我的数据存储区中作为db.StringProperty()并且已经填充了值。我想将contactCountry更改为列表,因此我将models.py文件更改为db.ListProperty(str),这是我开始看到错误的时候。我决定尝试使用

清除我的数据存储区
$ dev_appserver.py --clear_datastore [myappname]

并重建它。在清除我的数据存储区并再次尝试之后,相同的确切代码再次出于某种原因工作。

1 个答案:

答案 0 :(得分:0)

我能够让它工作 - contactCountry最初在我的数据存储区中作为db.StringProperty()并且已经填充了值。我想将contactCountry更改为列表,因此我将models.py文件更改为db.ListProperty(str),这是我开始看到错误的时候。我决定尝试使用

清除我的数据存储区
  

$ dev_appserver.py --clear_datastore [myappname]

并重建它。清除数据存储区并再次尝试后,相同的确切代码再次出于某种原因工作。