Нужно заказать по свойствам в справочной собственности, какое-либо хорошее решение? - PullRequest
3 голосов
/ 26 июля 2010

Скажите, у меня есть 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

1 Ответ

6 голосов
/ 26 июля 2010

Нет аналога для этого запроса в хранилище данных.Некоторые моменты:

  1. Вы не можете выбрать одно свойство.SELECT всегда SELECT * (вы выбираете целую сущность).
  2. Вы не можете выполнять объединения.Вам нужно денормализовать ваши модели, чтобы они соответствовали запросам, которые вы будете выполнять, или выполнять несколько запросов.

Так что для достижения вашей цели вам нужно хранить last_login в Relationship или иметь3-я модель, служащая индексом для этого конкретного запроса.

...