0

在 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()
4

1 回答 1

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

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

于 2013-03-12T03:16:14.350 回答