Запрос модели по ключу - PullRequest
4 голосов
/ 26 марта 2010

Что я пытаюсь сделать, это запросить в хранилище данных модель, ключ которой , а не ключ объекта, который у меня уже есть. Вот некоторый код:

class User(db.Model):
    partner = db.SelfReferenceProperty()

def text_message(self, msg):
    user = User.get_or_insert(msg.sender)

    if not user.partner:
        # user doesn't have a partner, find them one
        # BUG: this line returns 'user' himself... :(
        other = db.Query(User).filter('partner =', None).get()
        if other:
            # connect users
        else:
            # no one to connect to!

Идея состоит в том, чтобы найти другого User, у которого нет партнера, это не тот пользователь, которого мы уже знаем.

Я пробовал filter('key !=, user.key()), filter('__key__ !=, user.key()) и пару других, и ничто не возвращает другого User, у которого нет партнера. filter('foo !=, user.key()) также ничего не возвращает, для записи.

1 Ответ

4 голосов
/ 26 марта 2010

Существует очень простой способ обойти это: извлечь две записи и отфильтровать собственную, если она есть.

def text_message(self, msg):
    user = User.get_or_insert(msg.sender)

    if not user.partner:
        # user doesn't have a partner, find them one
        other = db.Query(User).filter('partner =', None).fetch(2)
        other = [u for u in other if u.key() != user.key()]
        if other:
            # connect user with other[0]
        else:
            # no one to connect to!
...