我又来了
""" A site message """ class Message( db.Model ) : # from/to/ a few other fields subject = db.StringProperty() body = db.Text() sent = db.DateTimeProperty( auto_now_add=True )
现在我正试图通过它的 KEY 来挑选一条消息。我之前保存了 key 并将其植入 HTML 表单中。结果是一个看起来像这样的可点击链接
<a href="/readmessage?key=aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw">click to open</a>
然后我运行这个 GQL 查询:
gql = """select * from Message where __key__='aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw'"""
但它不起作用,因为
BadFilterError: BadFilterError: invalid filter: __key__ filter value must be a Key; received aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw (a str).
我在这里完全遗漏了一些东西,那就是您如何将对象放入GQL 查询字符串中.. 而不是让Gql 解析器提示它是一个字符串?
请您参考如下方法:
不要为基于键的检索而使用 GQL——从字符串中创建一个键对象:
k = db.Key('aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw')
还有db.get(k)。如果您坚持使用 GQL,顺便说一句,k -- db.Key 的适当构造实例,不是 字符串对象!-) - - 也是您需要替换到 GQL 查询中的内容(通过 :1 或其他)。
