Gae ndb结构化属性

时间:2013-03-27 12:00:25

标签: python google-app-engine

我有这样的事情:

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

但是,我怎样才能获得按该用户日期排序的图书清单?或者一般来说,对结构化属性的任何查询都与我实际拥有的用户有关。

1 个答案:

答案 0 :(得分:4)

获得用户对象后,可以将books属性视为普通列表。要排序你可以做:

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

您可以在内存中进行排序,而不是通过查询进行排序(虽然我相信您可以通过结构化属性对User的查询结果进行排序,但它不会对对属性本身的排序,只是返回User个对象的顺序。

有关如何在Python中对列表进行排序的更多信息,请查看this article