Ваш запрос должен работать нормально, если вы удалите кавычки «Скотт», я думаю.
Вы также могли бы сделать все сущности Скотта Pet есть его сущность, как их родители:
class Owner(db.Model):
name = db.StringProperty()
class Pet(db.Model):
petname = db.StringProperty()
scott = Owner(name="scott")
scott.put()
Pet(parent=scott, petname="rufus").put()
Pet(parent=scott, petname="fluffy").put()
Pet(parent=scott, petname="snoogums").put()
pets = Pet.all().ancestor(scott).fetch(100)
# Feed pets to your templating engine. So to speak.
Делая Скотт вышестоящих субъектов домашних животных, все они будут добавлены к одной группе, и ancestor
запрос дает вам простой и строгий способ получить все объекты Pet
, являющиеся дочерними элементами данного «Владельца». Вы должны получить гораздо лучшую производительность с запросом предка, чем запрос, не относящийся к предку.
Это налагает ограничение на то, что субъекты Pet могут принадлежать только одной группе сущностей, и если вы хотите иметь Pet
, связанный с несколькими отношениями данных, вам придется выбрать другой подход. Если это взаимно-однозначное отношение, просто сохраняя ссылку на другой связанный объект.
Чтобы иметь печатаемое представление вашего Pet
лица, придать ему метод __unicode__
, что-то вроде этого:
class Pet(db.Model):
petname = db.StringProperty()
def __unicode__(self):
return "I am " + self.petname
__unicode__
должен возвращать строку с информацией, которую вы хотите видеть отпечатаны print
заявления. Как замечает Ник в комментариях, вы не должны использовать print
в приложении AppEngine. SDK поставляется с шаблонами Django и Jinja2. Используйте один из них или импортируйте тот, который вы предпочитаете.
Я думаю, что может быть то, что я ищу, но как распечатать их? Если я просто: печатать домашние я получаю: [<__ main__.Pet объект в 0x10859df50>, <__ объекта main__.Pet в 0x1085904d0>, <__ main__.Pet object at 0x107bccb50>] –
Ответил на ваш вопрос @stubblejumper –
Обратите внимание, что '__repr__' предназначен для возврата представления« кода »объекта; '__unicode__' - это метод, используемый для читаемого человеком представления, но вы, вероятно, должны использовать систему шаблонов и выводить только те биты, которые вам интересны в текущей ситуации. И вы действительно, действительно, действительно не должны использовать «печать» в приложении App Engine. –