Google App Engine:定义实体的父级

问题描述 投票:0回答:1

我想为书评网络应用创建数据存储区模型。 这个Web应用程序将有两种- BookReview

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进行定义? 我可能会错过一些非常明显的东西。

python google-app-engine google-cloud-datastore app-engine-ndb
1个回答
0
投票

您几乎完全正确。 假设您的get_book_key方法返回一个实际的ndb.Key实例,则您注释的行变为:

r = Review(parent=book_key, review=review)
© www.soinside.com 2019 - 2024. All rights reserved.