Google app engine 仅获取实体的投影属性

Google app engine 仅获取实体的投影属性,google-app-engine,google-cloud-datastore,app-engine-ndb,google-app-engine-python,Google App Engine,Google Cloud Datastore,App Engine Ndb,Google App Engine Python,如何仅获取实体的\u属性列表中投影查询中指定的实体属性 我的意思是: class Demo(ndb.Model): first_prop = ndb.StringProperty() second_prop = ndb.StringProperty() Demo( first_prop='First', second_prop='Second' ).put() q = Demo.query( projection=[first_prop] ) e = q.fetch() pr

如何仅获取实体的
\u属性列表中投影查询中指定的实体属性

我的意思是:

class Demo(ndb.Model):
    first_prop = ndb.StringProperty()
    second_prop = ndb.StringProperty()

Demo( first_prop='First', second_prop='Second' ).put()

q = Demo.query( projection=[first_prop] )
e = q.fetch()
print e[0]._properties.keys()

返回
[“第二道具”、“第一道具”]
。我希望
len(\u properties)
成为
1
..

有一个
\u projection
属性可用于结果(通过在浏览器中至少加载两次来调用此处理程序):

另外,

q、 投影返回(演示('first_prop'),)


您是否可能在
Demo.query(projection=[first\u prop])
中传递了实体或其他对象,而不是字符串形式的属性名称,即“first\u prop”?您应该得到与
r[0]相同的结果。

我知道query
q
具有
projection
属性,只是不知道如何检查属性是否属于该投影:
q.projection
返回
(演示('first_prop'),)
但是
如果q_proj中的q_proj和prop不起作用。。。
import webapp2
from google.appengine.ext import ndb


class Dummy(ndb.Model):
    p1 = ndb.StringProperty()
    p2 = ndb.StringProperty()


class ProjectionHandler(webapp2.RequestHandler):

    def get(self):
        # run this handler at least twice before looking at the console output
        d = Dummy(id='abc')
        d.p1 = 'p1'
        d.p2 = 'p2'
        d.put()
        q = Dummy.query(projection=['p1'])
        r = q.fetch()
        if len(r) > 0:
            print r[0]._properties.keys()  # prints: ['p1', 'p2']
            print r[0]._projection  # prints: ('p1',)

app = webapp2.WSGIApplication([
    ('/projection', ProjectionHandler)
])