У меня есть объект Contest, который использует ListProperty для хранения ключей объектов-кандидатов. Вот некоторые детали:
class Contest(db.Model):
candidates = db.ListProperty(db.Key)
def create_candidate_objects(self):
put_list = []
for n, name in enumerate(self.tmp_candidates):
put_list.append(Candidate(parent = self, name = name))
keys = db.put(put_list)
self.candidates = keys
self.put()
class Candidate(db.Model):
name = db.StringProperty(required = True)
Когда я делаю этот запрос:
c = models.Candidate.all().ancestor(contest).fetch(2)
Все отлично работает.
Но когда я делаю запрос, используя ListProperty, как это:
c = db.get(contest.candidates)
Я получаю ошибку
KindError: No implementation for kind 'Candidate'
Можете ли вы помочь мне понять, почему не работает последний запрос? Я импортировал класс Candidate в модуль, который выполняет запрос.
ОБНОВЛЕНИЕ: обратите внимание, что он находится на сервере разработчиков на случай, если это может изменить ситуацию.
UPDATE2:
Как предположил Ник, это работает:
c2 = models.Candidate.get(contest.candidates)
но это не работает (вызывает KindError):
from models import Candidate
c = db.get(contest.candidates)
Update3:
В тестовом коде встречается оскорбительная строка, поэтому я не могу попробовать этот конкретный сбой на рабочем сервере. Я использовал точно такую же строку в другом месте, и она работает как на dev, так и на производственных серверах.
Ник спросил об импорте, и я делаю это в своем тестовом коде:
sys.path.append("/usr/local/google_appengine/lib/simplejson")
import simplejson as json
но все остальное просто типично.