0

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に書いたものは、実際には投票順、次に作成日順です。ドラゴンクスが示唆するように。それらを分割すると、期待どおりに機能します。


ありがとう

4

1 に答える 1

1

別のインデックスを試す

indexes:
- kind: UserImage
  properties:
  - name: user
  - name: votes
    direction: desc

- kind: UserImage
  properties:
  - name: user
  - name: creation_date
    direction: desc    
于 2012-06-08T05:32:22.030 に答える