im not 100% уверены в этом, но в моем мнении У запросов NDB возникают проблемы, когда используется sortBy
a ComputedProperty
. В моем примере ниже сортировка по name
работает без ожиданий, а сортировка по numberOfProducts
не возвращает никаких данных. Однако, если я сортирую по name
, вернутся правильные значения для numberOfProducts
, что означает, что сама модель и база данных в порядке.NDB SortBy нет результатов для ComputedProperty
My Model:
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
Итак, как определяется запрос? –