3

说我有两种:

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. 您不能选择单个属性。SELECT总是SELECT *(您选择整个实体)。
  2. 你不能做连接。您需要对模型进行非规范化以适应您将执行的查询或执行多个查询。

因此,为了实现您的目标,您需要last_login存储在 中Relationship,或者有第三个模型作为该特定查询的索引。

于 2010-07-26T08:18:41.333 回答