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

ここでstartDate、およびendDateは日時オブジェクトです。しかし、次のエラーメッセージが表示されました。

最初の並べ替えプロパティは、不等式フィルターが適用されるプロパティと同じである必要があります

注文を追加する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 に答える