我有以下型号:
class Product(ndb.Model):
name = ndb.StringProperty()
bidTime = ndb.DateTimeProperty()
price = ndb.IntegerProperty()
...
我喜欢使用以下查询:
productRanks = Product.query(Product.bidTime>=startDate,
Product.bidTime<endDate).order(-Product.price).fetch()
其中startDate
和endDate
是日期时间对象。但是我收到以下错误消息:
第一个排序属性必须与应用不等式过滤器的属性相同
如果我在订单中添加Product.bidTime
,则不会出现错误:
.order(Product.bidTime, -Product.price)
但是,排序后的结果是错误的(根据日期,而不是价格)。那么,问题是什么?
答案 0 :(得分:5)
就appengine而言,没有任何问题。它的行为与记录一致。来自文档
注意:由于App Engine数据存储区执行查询的方式,如果 查询指定属性上的不等式过滤器并对其进行排序 其他属性,不等式过滤器中使用的属性必须是 在其他财产之前订购。
请参阅https://developers.google.com/appengine/docs/python/datastore/queries#Sort_Orders
获得结果后,您可能需要在内存中进行排序。