簡體   English   中英

Google App Engine NDB連續查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM