谷歌应用引擎:ndb查询更清洁

时间:2013-03-12 02:34:41

标签: google-app-engine

在Google App Engine上,我想知道是否可以按照以下描述的方式在ndb查询中构造条件。假设我有以下代码:

if bidded == '':
    productRanks = Product.query(Product.bidTime>=startDate,
                                 Product.bidTime<endDate).fetch()         
elif bidded == 'yes':
    productRanks = Product.query(Product.bidTime>=startDate
                                 Product.bidTime<endDate,
                                 Product.bidded=='yes').fetch()
else:
    productRanks = Product.query(Product.bidTime>=startDate
                                 Product.bidTime<endDate,
                                 Product.bidded=='no').fetch()

看起来很乱。假设,我希望能够做到以下几点。可能吗?如果是,怎么样?

condition = 'Product.bidTime>=startDate, Product.bidTime<endDate'
if bidded = 'yes':
    condition = condition + ', Product.bidded=='yes'
elif bidded == 'no':
    condition = condition + ', Product.bidded=='no'
productRanks = Product.query(condition).fetch()

1 个答案:

答案 0 :(得分:2)

你真的应该花一些时间阅读文档,它会为你节省很多时间。

请参阅https://developers.google.com/appengine/docs/python/ndb/queries#filter_by_prop如果您阅读本节,则会清楚地显示您可以继续添加过滤器。从文档中可以很清楚地看到这个例子。

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

您不必继续创建新查询,只需重新绑定相同的变量。