3

私が2種類あるとしましょう:

class Account(db.Model):
  name = db.StringProperty()

  create_time = db.DataTimeProperty()
  last_login = db.DateTimeProperty()
  last_update = db.DataTimeProperty()


class Relationship(db.Model)
  owner = db.ReferenceProperty(Account)
  target = db.ReferenceProperty(Account)
  type = db.IntegerProperty()

次のクエリと同等のものを取得したい:

SELECT target 
FROM Relationship
WHERE owner = :key AND type = :type
ORDERBY target.last_login DESC 

どうやってするか?

参照: http: //www.mail-archive.com/google-appengine@googlegroups.com/msg15878.html

4

1 に答える 1

6

データストアには、そのクエリに相当するものはありません。いくつかのポイント:

  1. 1つのプロパティを選択することはできません。SELECT常にSELECT *です(エンティティ全体を選択します)。
  2. 結合はできません。実行するクエリに合うようにモデルを非正規化するか、複数のクエリを実行する必要があります。

したがって、目標を達成するには、にlast_login格納するRelationshipか、その特定のクエリのインデックスとして機能する3番目のモデルを用意する必要があります。

于 2010-07-26T08:18:41.333 に答える