Google app engine 属性错误:'_基本值';对象没有属性';价值';

Google app engine 属性错误:'_基本值';对象没有属性';价值';,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我在Google App Engine SDK v1.8.2.1中遇到了一个奇怪的问题。SDK似乎在检索属性值的方式上存在问题。 实体看起来是这样的: class userDB(EndpointsModel): userID = ndb.StringProperty(required=True, indexed=True) name = ndb.StringProperty(required=True, indexed=True) update = ndb.DateTim

我在Google App Engine SDK v1.8.2.1中遇到了一个奇怪的问题。SDK似乎在检索属性值的方式上存在问题。 实体看起来是这样的:

class userDB(EndpointsModel):
    userID = ndb.StringProperty(required=True, indexed=True)
    name = ndb.StringProperty(required=True, indexed=True)
    update = ndb.DateTimeProperty(indexed=True)
    orgs = ndb.StructuredProperty(providers, repeated=True, indexed=True)
    system = ndb.StructuredProperty(system, repeated=True, indexed=True)
    comp = ndb.StructuredProperty(comp, repeated=True, indexed=True)
从数据存储查看器:

orgs.value (list) [u'comp', u'system']
我的cron作业代码:

class CronRefresh(webapp2.RequestHandler):
    def get(self):  
        for user in userDB.query().fetch():
            for org in user.orgs:
                provider.addItems(user.key, org.value)
当我将org.value打印到控制台日志时,没有问题,但是当我尝试将其传递给函数时,它会抛出以下错误

INFO     2013-07-29 17:28:30,980 module.py:595] default: "POST / HTTP/1.1" 200 594
ERROR    2013-07-29 21:28:37,374 webapp2.py:1552] '_BaseValue' object has no attribute 'value'

Traceback (most recent call last):

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__

    rv = self.handle_exception(request, response, e)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__

    rv = self.router.dispatch(request, response)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher

    return route.handler_adapter(request, response)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__

    return handler.dispatch()

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch

    return self.handle_exception(e, self.app.debug)

  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch

    return method(*args, **kwargs)

  File "E:\main.py", line 74, in get

    provider.addItems(user.key, org.value)

AttributeError: '_BaseValue' object has no attribute 'value'

INFO     2013-07-29 17:28:37,382 module.py:595] default: "GET /cron/refresh HTTP/1.1" 500 114
INFO     2013-07-29 17:28:49,043 module.py:595] default: "GET /cron/refresh HTTP/1.1" 200 -
但是,如果我运行cron作业两次,它将顺利通过。有人知道我做错了什么吗?这是预期的行为吗

更新:提供者是我编写的一个导入。 任何帮助都将不胜感激

UPDATE2:添加了addItems函数。我已经确认apple_列表是一个合适的字典列表

def addItems(key, X):
user = key.get()
if X == 'apple':
    def add(item):
        newObject = apple(name=item['name'], status=item['status'], obtained=item['obtained'])
        objectList = user.query().fetch()[0].apple
        for object in objectList: 
            if (object.name == item['name'] and (object.status != item['status'] or object.obtained != item['obtained'])):
                logging.debug("If #1 Happened")
                continue
            elif (object.name == item['name'] and object.status == item['status'] and object.obtained == item['obtained']):
                logging.debug("If #2 Happened")
                continue
            else:
                logging.debug("Else Happened")
                continue

    if not user.query().fetch()[0].apple:
        for item in apple_list:
            user.apple.append(apple(name=item['name'], status=item['status'], obtained=item['obtained']))
            user.put()
    else:
        for item in apple_list:
            add(item)

显然,
user.orgs
已被
put()
放入数据库。将其“变异”为
\u BaseValue
,如下所述:。

显然,
user.orgs
put()
放入数据库。将其“变异”为
\u BaseValue
,如下所述:.

哪里定义了
提供程序
?提供程序是我编写的一个导入,它承载我看到的函数addItemsI,该函数显示
提供程序
继承自
端点模型
。我们无法猜测还有什么没有包括在这里。您的问题信息太少,我们无法为您提供帮助,因此我将对其进行标记。命名约定可能不是最好的,但是
提供者
是您在我的另一篇文章中看到的
端点模型。而
provider
是我编写的一个“模块”。有时my code works err通过了对实体属性的第一次调用,但在随后的
addItems
函数调用中失败,并且出现了相同的
\u BaseValue
错误,这也是没有意义的。关于更多细节,我已经为其余的适用代码添加了
addItems
功能。如果它在打印到控制台日志时起作用,它真的会是我的代码吗?我倾向于您所指出的关于
.put()
调用的内容。有什么帮助吗?问题不在于
addItems()
,而在于
org.value
。这里没有显示影响
用户组织的其他因素。
提供程序
在哪里定义?提供程序是我编写的一个导入,它承载了我看到的函数addItems,该函数显示
提供程序
继承自
端点模型
。我们无法猜测还有什么没有包括在这里。您的问题信息太少,我们无法为您提供帮助,因此我将对其进行标记。命名约定可能不是最好的,但是
提供者
是您在我的另一篇文章中看到的
端点模型。而
provider
是我编写的一个“模块”。有时my code works err通过了对实体属性的第一次调用,但在随后的
addItems
函数调用中失败,并且出现了相同的
\u BaseValue
错误,这也是没有意义的。关于更多细节,我已经为其余的适用代码添加了
addItems
功能。如果它在打印到控制台日志时起作用,它真的会是我的代码吗?我倾向于您所指出的关于
.put()
调用的内容。有什么帮助吗?问题不在于
addItems()
,而在于
org.value
。这里没有显示影响用户组织的
user.orgs
,我对这一切都不熟悉。这是什么意思?我尝试使用
str()
将其转换回字符串,但没有任何作用。同样奇怪的是,如果我运行cron两次,它就会工作。。。。。我迷路了。基本上你需要复制组织列表。所以
provider.addItems(user.key,list(org))
可能就是您需要做的。所以我尝试了
temp=list([org])provider.addItems(user.key,temp[0].value)
但仍然得到了
\u BaseValue
错误。我对这一切都是新手。这是什么意思?我尝试使用
str()
将其转换回字符串,但没有任何作用。同样奇怪的是,如果我运行cron两次,它就会工作。。。。。我迷路了。基本上你需要复制组织列表。所以
provider.addItems(user.key,list(org))
可能就是您需要做的。所以我尝试了
temp=list([org])provider.addItems(user.key,temp[0].value)
但仍然得到了
\u BaseValue
错误。