これは100%確信していませんが、私の意見では、sortBy
ComputedProperty
を使用するとNDBクエリに問題があります。 私の例では、name
のソートは期待通りに機能せず、numberOfProducts
でソートするとエントリは返されません。しかし、私がname
でソートすると、numberOfProducts
の正しい値が返されます。これは、モデル自体とデータベースが適切であることを意味します。NDB SortBy ComputedPropertyの結果はありません
マイモデル:
class Brand(ndb.Model):
name = ndb.StringProperty()
products = ndb.ComputedProperty(lambda self: Product.query(Product.brand==self.key).fetch(keys_only=True))
numberOfProducts = ndb.ComputedProperty(lambda self: len(self.products))
マイクエリ:
sortBy = Brand._properties[args['sortBy']]
query = query.order(-sortBy if args['asc'] == '0' else +sortBy)
entities, cursor, more = query.fetch_page(20, start_cursor=Cursor(urlsafe=args['cursor']))
感謝の思考のための任意の原因の多く。
計算されたプロパティを使用してクエリの並べ替えの簡単な例を実行することをお勧めします。 (つまり、他の可能な変数の振る舞いを取り除いて)正しくソートできるかどうかを確認してください。また、どこからクエリが来るのですか?例えば、「Brand.query()。order(-Brand.numberOfProducts)」 –
私は言及しませんでした。私があなたが言及したクエリーを正確に試しました。私もエラー/警告を得ることはありません、私は空の結果を取得します。 – lkshrk
クエリはどのように定義されていますか? –