在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()
答案 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
您不必继续创建新查询,只需重新绑定相同的变量。