ReferenceProperties добавить объекты запроса в качестве атрибутов к указанному классу.Так что внимательно посмотрите на ваши отображения:
class BookAuthor(db.Model):
# This adds a query-object as an attribute named 'books' to Book entities.
book = db.ReferenceProperty(Book, required=True, collection_name='books')
# This adds a query-object as an attribute named 'authors' to Author entities.
author = db.ReferenceProperty(Author, required=True, collection_name='authors')
В вашем коде:
b = Book(title="My Book")
a = Author(name="Author of My Book")
Итак, b
будет иметь атрибут books
, а не authors
.И a
будет иметь атрибут authors
, а не books
.
Если вы измените имена коллекций, ваш код должен запуститься.
class BookAuthor(db.Model):
# This adds a query-object as an attribute named 'authors' to Book entities.
book = db.ReferenceProperty(Book, required=True, collection_name='authors')
# This adds a query-object as an attribute named 'books' to Author entities.
author = db.ReferenceProperty(Author, required=True, collection_name='books')
Кроме того, если BookAuthor
не имеет дополнительных свойств, обязательно посмотрите список ключей.метод, описанный в статье, на которую вы ссылались.