仅获取实体的投影属性
Get only projected properties of an entity
如何在实体的 _properties
列表中仅获取投影查询中指定的实体属性?
我的意思是:
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()
returns['second_prop', 'first_prop']
。我希望 len(_properties)
成为 1
...
有一个 _projection
属性 您可以在结果上使用(通过在浏览器中加载它来调用此处理程序 http://localhost:8080/projection 至少 两次) :
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)
])
此外,
q.projection returns (Demo('first_prop'),)
是否有可能不是 属性 的名称作为字符串,即 'first_prop' 您在 Demo.query( projection=[first_prop] )
中传递了实体或其他对象?您应该得到与 r[0]._projection
.
相同的结果
如何在实体的 _properties
列表中仅获取投影查询中指定的实体属性?
我的意思是:
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()
returns['second_prop', 'first_prop']
。我希望 len(_properties)
成为 1
...
有一个 _projection
属性 您可以在结果上使用(通过在浏览器中加载它来调用此处理程序 http://localhost:8080/projection 至少 两次) :
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)
])
此外,
q.projection returns (Demo('first_prop'),)
是否有可能不是 属性 的名称作为字符串,即 'first_prop' 您在 Demo.query( projection=[first_prop] )
中传递了实体或其他对象?您应该得到与 r[0]._projection
.