我正在使用 Google App Engine、Python 并且正在构建一个功能,允许用户按票数或 creation_date 对他们的照片进行排序。
模型应如下所示:
class MyUser(db.Model):
user = db.UserProperty(required=True)
name = db.StringProperty()
class UserImage(db.Model):
user = db.ReferenceProperty(MyUser,collection_name='user_images')
image_key = blobstore.BlobReferenceProperty(required=False)
creation_date = db.DateTimeProperty(required=True,auto_now_add=True)
votes = db.IntegerProperty(required=False)
我想运行两个查询:
my_user = db.get('my_user_key')
1) image_keys = my_user.user_images.order('-votes').fetch(100,keys_only=True)
2) image_keys = my_user.user_images.order('-creation_date').fetch(100,keys_only=True)
第一个查询运行得很好,但第二个给我NeedIndexError: no matching index found即使我将这些属性添加到index.yaml
这是我的 index.yaml
indexes:
- kind: UserImage
properties:
- name: user
- name: votes
direction: desc
- name: creation_date
direction: desc
Google App Engine 仪表板告诉我所有索引现在都在提供服务。
更新
我在 index.yaml 中写的实际上是 Order By votes,然后是 creation_date。正如dragonx所建议的那样。我将它们分开,它按预期工作。
谢谢