私は候補プロパティのキーを格納するためにListPropertyを使用するContestエンティティを持っています。ここではいくつかの詳細は以下のとおりです。私はこのクエリを実行するとGAE:ListPropertyを介してエンティティを取得するときのKindError
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'
を取得し、あなたは最後のクエリが動作しない理由を私は理解するのに役立つことはできますか?私は、クエリを実行しているモジュールに候補クラスをインポートしました。
更新:違いが生じる可能性がある場合は、彼が開発者サーバーにあることに注意してください。
アップデート2:
ニックによって示唆されるように、この作品:
c2 = models.Candidate.get(contest.candidates)
をしかし、これは動作しません(KindErrorを上げる):
from models import Candidate
c = db.get(contest.candidates)
Update3と:
問題テストコードで行が発生するため、本番サーバーでこの特定のエラーを試すことはできません。私はまったく同じ行を別の場所で使っていますが、これは開発サーバーと運用サーバーの両方で動作します。
ニックは輸入について尋ね、と私は私のテストコードでこれをやっている:
sys.path.append("/usr/local/google_appengine/lib/simplejson")
import simplejson as json
が、他のすべては、単に典型的なものです。
私はすでにそれを試しても動作しません。実際には、これは動作しますが、c = models.Candidate.all()。ancestor(contest).fetch(2)、ちょうど取得したエンティティのキーを使用して再度取得しようとすることはできません。 't仕事:db.get(c [0] .key())。これがdevサーバのバグかどうか疑問に思っています。 –
なぜこれが助けになると思いますか? –