2013-03-27 5 views
1

У меня есть что-то вроде этого:Gae ОПРС structuredproperty

class Book(ndb.Model): 
    date=ndb.DateProperty() 
    title=ndb.StringProperty() 
    content=ndb.TextProperty() 

class User(ndb.Model): 
    username=ndb.StringProperty() 
    name=ndb.StringProperty() 
    city=ndb.StringProperty() 
    books=ndb.StructuredProperty(Book, repeated=True) 

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

После того, как у меня есть объект пользователя:

user=User.query(User.username=="pepo").get() 

я могу получить список книг этого пользователя легко:

user.books 

, но, как я могу получить, например, список книги, заказанные по дате этого пользователя? Или вообще любой запрос структурированного свойства, но связанный с пользователем I alrealdy.

ответ

4

Как только у вас есть пользовательский объект, вы можете рассматривать свойство books как обычный список. Для сортировки вы можете сделать:

sorted_books = sorted(user.books, lambda x: x.date) 

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

Дополнительную информацию о сортировке списков в Python см. На странице this article.

Смежные вопросы