Es gibt eine _projection
Eigenschaft sein, das Sie auf das Ergebnis (durch Laden es in Ihrem Browser http://localhost:8080/projection mindestens zweimal aufrufen diesen Handler) verwenden können:
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)
])
Zusätzlich ,
q.projection Returns (Demo ('first_prop'))
Ist es möglich, dass Sie anstelle des Namens der Eigenschaft als Zeichenfolge, z. B. 'first_prop', die Entität oder ein anderes Objekt in Demo.query(projection=[first_prop])
übergeben? Sie sollten das gleiche Ergebnis wie r[0]._projection
erhalten.
Ich weiß Abfrage 'q' hat 'Projektion' Attribut, nur nicht verstehen, wie zu prüfen, ob die Eigenschaft zur Projektion gehören: 'q.projection' gibt '(Demo ('first_prop'),)' aber 'if q_proj und prop in q_proj' funktioniert einfach nicht ... – user2154587