3

我有以下模型:

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

wherestartDateendDate是日期时间对象。但我收到以下错误消息:

第一个排序属性必须与应用不等式过滤器的属性相同

如果我Product.bidTime按顺序添加,则不会出现错误:

.order(Product.bidTime, -Product.price)

但是,排序结果将是错误的(根据日期,而不是价格)。那么,问题是什么?

4

1 回答 1

5

就 appengine 而言,没有问题。它的行为与记录的一样。从文档

注意:由于 App Engine 数据存储区执行查询的方式,如果查询指定属性的不等式过滤器和其他属性的排序顺序,则不等式过滤器中使用的属性必须在其他属性之前排序。

请参阅https://developers.google.com/appengine/docs/python/datastore/queries#Sort_Orders

获得结果集后,您可能需要在内存中进行排序。

于 2013-03-11T11:02:40.180 回答