Google App Engine、Python を使用しており、ユーザーが投票数または作成日で写真を注文できる機能を構築しています。
モデルは次のようになります。
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)
実行したい2つのクエリ:
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)
最初のクエリは問題なく実行されますが、2 番目のクエリでは、これらのプロパティをindex.yamlに追加しても、 NeedIndexError: no matching index foundが返されます。
ここに私のindex.yamlがあります
indexes:
- kind: UserImage
properties:
- name: user
- name: votes
direction: desc
- name: creation_date
direction: desc
Google App Engine ダッシュボードを見ると、現在すべてのインデックスが処理されていることがわかります。
アップデート
私がindex.yamlに書いたものは、実際には投票順、次に作成日順です。ドラゴンクスが示唆するように。それらを分割すると、期待どおりに機能します。
ありがとう