Google App Engine: KindError - Нет реализации для типа ObjectName - PullRequest
4 голосов
/ 13 июля 2010

Я пишу класс db.Model в google app engine, который выглядит примерно так:

class Cheese(db.Model):
   name = db.StringProperty()
   def say_cheese(self):
      return name + "cheese"

По какой-то причине, когда я запускаю:

cheese = Cheese(name = "smelly")
print thing.say_cheese()

Я получаю KindError - Нет реализации для вида 'Cheese'. Я хочу это сказать: "вонючий сыр"

Я что-то не так делаю? Разрешено ли добавлять метод к объекту db.Model?

1 Ответ

10 голосов
/ 13 июля 2010

Похоже, что thing на самом деле загружается из поля db.ReferenceProperty() (на не-1003 * сущности), которое ссылается на сущность Cheese. Если вы обращаетесь к такому свойству без предварительного импорта модели Cheese, тогда код не сможет найти тип Cheese для построения сущности и завершится ошибкой с указанной ошибкой.

В любом случае, попробуйте импортировать модель Cheese в коде, который вызывает ошибку. Тогда код должен быть в состоянии найти реализацию для Cheese, когда это необходимо.

Чтобы ответить на другую часть вашего вопроса: Да, вам определенно разрешено добавлять свои собственные методы в подкласс db.Model.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...