【问题标题】:No matching index found on DateTimeProperty Google App Engine在 DateTimeProperty Google App Engine 上找不到匹配的索引
【发布时间】:2012-06-08 05:13:39
【问题描述】:

我正在使用 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)

我想运行两个查询:

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 中写的内容实际上是按投票排序,然后按创建日期排序。正如dragonx所建议的那样。我将它们分开,它按预期工作。


谢谢

【问题讨论】:

    标签: python google-app-engine indexing


    【解决方案1】:

    尝试单独的索引

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

    【讨论】:

    • 请记住,当你 put() 时,这也会使写入次数增加一倍,所以以后不要抱怨你的应用程序花费太多:)
    猜你喜欢
    • 2015-06-30
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多