我想为书评webapp创建数据存储模型。此网络应用有两种类型 - 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
处理程序中的哪个位置定义了这个?我可能会遗漏一些非常明显的东西。
答案 0 :(得分:0)
你几乎是对的。假设您的get_book_key
方法返回实际的ndb.Key
个实例,则您评论的行将变为:
r = Review(parent=book_key, review=review)