KindError при установке значения ReferenceProperty - PullRequest
1 голос
/ 22 сентября 2009

Этот, казалось бы, совершенный код Google App Engine не работает с ошибкой KindError.

# in a django project 'stars'
from google.appengine.ext import db

class User(db.Model):
    pass

class Picture(db.Model):
    user = db.ReferenceProperty(User)

user = User()
user.put()

picture = Picture()
picture.user = user
# ===> KindError: Property user must be an instance of stars_user

Исключение возникает в google.appengine.ext.db.ReferenceProperty.validate:

def validate(self, value):
    ...
    if value is not None and not isinstance(value, self.reference_class):
      raise KindError('Property %s must be an instance of %s' %
                            (self.name, self.reference_class.kind()))
    ...

1 Ответ

1 голос
/ 22 сентября 2009

Оказывается, я импортировал модель в admin.py как

from frontend.stars.models import Star

Эта строка загрязнила пространство имен модуля Star, и запрос isinstance не удался.

>>> user.__class__
<class 'frontend.stars.models.User'>
>>> Picture.user.reference_class
<class 'stars.models.User'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...