2013-03-27 57 views
1

我有這樣的事情:GAE NDB 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 

,但是,我怎麼能得到的,例如,在列表按該用戶的日期排列的書籍?或者一般來說,任何關於結構化特性的查詢,但與我alrealdy擁有的用戶有關。

回答

4

擁有用戶對象後,可以將books屬性視爲普通列表。排序,你可以這樣做:

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

你會在內存中,而不是通過查詢來排序(雖然我相信你可以按結構化屬性上User查詢的結果,它不會有對屬性本身的排序有任何影響,只是返回User對象的順序)。

有關如何在Python中對列表進行排序的更多信息,請查看this article