[英]google app engine ndb successive queries
假设我有一个HTML表单,如下所示:
<form ...>
Title: <input type=text name=title>
Account: <input type=text name=account>
<input type=submit value=search>
</form>
google app引擎的NDB如下:
class Message(ndb.Model):
title = ndb.StringProperty()
account = ndb.StringProperty()
由于用户可能会或可能不会在字段中输入数据,因此搜索将实现为连续查询:
messages = Message.query()
if title:
messages = messages.query(Message.title==title)
if account:
messages = messages.query(Message.account==account)
上面的代码不起作用,因为“查询对象没有属性查询”
那么,如何执行连续查询?
您是否阅读过有关ndb查询的文档。 https://developers.google.com/appengine/docs/python/ndb/queries
它有一个很好的例子,可以将查询分为多个部分
qry1 = Account.query() # Retrieve all Account entitites
qry2 = qry1.filter(Account.userid >= 40) # Filter on userid >= 40
qry3 = qry2.filter(Account.userid < 50) # Filter on userid < 50 as well
在您的示例中,您将
messages = Message.query()
if title:
messages = messages.filter(Message.title==title)
if account:
messages = messages.filter(Message.account==account)
在问题代码中调用query()会创建一个新查询,而不是扩展它。
在文档中进一步阅读,您会发现您也可以开始使用OR运算符来分多个阶段构造查询。 上面的示例表示AND。
摆脱messages = Message.query()
行,然后使用:
messages = Message.query(Message.title==title)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.