我想为书评网络应用创建数据存储区模型。 这个Web应用程序将有两种- Book
和Review
:
class Book(ndb.Model):
title = ndb.StringProperty()
class Review(ndb.Model):
review = ndb.TextProperty()
Review
实体应该是父Book
实体的子实体。 在查看Book实体的页面时,还应查询并显示其Review
子实体的列表,如下所示:
Review.query(ancestor=book.key).fetch()
下面的(简化的)处理程序将处理新实体的创建:
class NewBook(BaseHandler):
def get(self):
self.render('new-book-form.html')
def post(self):
title = self.request.get('title')
b = Book(title = title)
b.put()
class NewReview(BaseHandler):
def get(self):
self.render('new-review-form.html')
def post(self):
book_key = self.get_book_key() # gets book entity's key
review = self.request.get('review')
r = Review(review = review) # Do I define this entity's parent here?
r.put()
根据文档,将父级分配给子实体的键,如下所示:
review = Review(parent=ndbKey(Book, book_id), review = review)
我在NewReview
处理程序中的NewReview
进行定义? 我可能会错过一些非常明显的东西。
您几乎完全正确。 假设您的get_book_key
方法返回一个实际的ndb.Key
实例,则您注释的行变为:
r = Review(parent=book_key, review=review)