我无法理解这个错误意味着什么,显然,没有人在互联网上遇到同样的错误
BadArgumentError:带游标的_MultiQuery需要
__key__
订单
这发生在这里:
return SocialNotification.query().order(-SocialNotification.date).filter(SocialNotification.source_key.IN(nodes_list)).fetch_page(10)
属性source_key
显然是一个键,nodes_list
是以前检索过的实体键列表。
我需要找到的所有SocialNotifications
字段source_key
与列表中的某个键匹配。
答案 0 :(得分:17)
错误消息会尝试告诉您涉及IN和游标的查询必须按__key__
排序(这是实体密钥的内部名称)。 (这是必需的,以便结果可以正确合并并变得独一无二。)在这种情况下,您必须将.order()
来电替换为.order(SocialNotification._key)
。
答案 1 :(得分:4)
我在这里找到答案:https://developers.google.com/appengine/docs/python/ndb/queries#cursors
您可以将查询更改为:
SocialNotification.query().order(-SocialNotification.date, SocialNotification.key).filter(SocialNotification.source_key.IN(nodes_list)).fetch_page(10)
为了让这个工作。请注意,当nodes_list很大(1000个实体)时,它似乎很慢(18秒),至少在开发服务器上。我没有大量的测试 测试服务器上的数据。
答案 2 :(得分:3)
当您过滤不等式并尝试获取页面时,似乎也会发生这种情况。
(例如MyModel.query(MyModel.prop != 'value').fetch_page(...)
。这基本上意味着(除非我遗漏了一些东西)你在使用不等式过滤器时无法获取fetch_page,因为一方面你需要排序为MyModel.prop
但另一方面你需要它是MyModel._key
,这很难:)
答案 3 :(得分:0)
在没有群组的情况下进行过滤时遇到了同样的错误。 每次我的过滤器返回多个结果时都会发生错误。
要修复它,我实际上必须按键添加排序。
答案 4 :(得分:0)
您需要输入您要订购的物业并输入钥匙。
Velocity