1

我有这样的事情:

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

但是,例如,我怎样才能得到该用户按日期排序的书籍列表?或者通常对结构化属性的任何查询,但与我已经拥有的用户相关。

4

1 回答 1

4

拥有用户对象后,您可以将books属性视为普通列表。要排序,您可以执行以下操作:

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

您将在内存中进行排序,而不是通过查询(尽管我相信您可以User通过结构化属性对查询结果进行排序,但它不会对属性本身的排序产生任何影响,只是在返回的User对象)。

有关如何在 Python 中对列表进行排序的更多信息,请查看这篇文章

于 2013-03-27T12:22:37.120 回答