私の現在のアプリケーションではフレンドリストの多くの関係にdb.ListProperty(db.Key)
が使用されています。SDKコンソールにコンテンツが表示され、空のリストが取り出されます
私たちは、次のスキームがあります。
# previous models
class User(db.Model):
name = db.StringProperty()
nickname = db.StringProperty()
join_date = db.DateProperty(auto_now_add=True)
party = db.ReferenceProperty(PartyEntry, collection_name='participants')
def by_name(self, string):
return self.gql("WHERE name = :name", name=string).get()
def key_by_name(self, string):
return self.by_name(string).key()
class FriendList(db.Model):
owner = db.ReferenceProperty(User)
friends = db.ListProperty(db.Key)
、ユーザーがfriendlistフェッチハンドラ、それを処理し、それを表示します。
class Profile_FriendList(WebBase):
def get(self):
user = self._auth()
if user:
usr_key = User().key_by_name(user.nickname())
friend_list = friend_lists = FriendList.all().filter('owner', usr_key).fetch(10)
self.renderskeleton({ 'friendlist': friend_list } ,'friends.html')
私は2つのdb.Key(とテストfriendlistを埋め)FriendList.friendsのエントリをリストします。 s.c. SDKコンソール(>インタラクティブDatastorageviewerは)私にこれらのアイテムをdiplays:
key1,key2
しかし、私はそのキーと 印刷frlst.friends 出力することによって、このエンティティFriendListを呼び出す場合:ハンドラで[] 同じ問題。 私は仕事ができるデータはありません。 しかし、データが存在します。
Fixed: FriendListの問題は、呼ばれたfriendlistオブジェクトがクエリではなく、新しいFriendList()オブジェクトであったことです。 コードを更新しました。固定
:完全な質問が
usr_key = User().key_by_name(user.nickname())
logging.info(user.nickname())
logging.info(usr_key)
friend_list = FriendList().all().filter("owner", usr_key).fetch(20)
logging.info(friend_list)
logging.info(friend_list[0].friends)
friends = User.get(friend_list[0].friends)
logging.info(friends)
self.renderskeleton({ 'friends': friends } , 'friends.html')
を解決し、私はGqlQueryのリストを選択した結果の代わりに「1」は、私が欲しい、私はそこからしなければならなかったことは、単純に友人のキーのリストを入れていましたUser.get()とvoilà私は必要なすべてのデータを持っていました。
:.key_by_nameは()まだ名前:) –
により、ユーザーのキーを取得するユーザー()メソッドで、ユーザーオブジェクトにはアクセスできません:( –
daemonfire300 @、うん、私はそれを逃しました;) Userエンティティの名前フィールドに 'user.nickname()'の値が入力されていますか? –