私はPHPの世界から来て、Pythonに比較的慣れていません。PHP では、User などのデータベースからオブジェクトに対応する行を定期的にフェッチし、ビュー ページにユーザー オブジェクトを渡す前にプロパティを追加します。たとえば、ユーザーにはプロパティ email、name、および id があります。データベースから 5 人のユーザーを取得し、for ループで動的プロパティをユーザーに割り当てます。
これは、for ループ内の Python/Google App Engine データストア モデルでは機能しないようです (Python よりもデータストア モデルを使用する必要があると思います)。これは for ループ内で機能します (つまり、for ループ内で user.image を参照できますが、for ループが終了すると、すべてのオブジェクトに新しい属性イメージがもうないように見えます。
コード例を次に示します。
# Model
Class User(ndb.Model):
email = ndb.StringProperty()
name = ndb.StringProperty()
# And then a function that returns a list of users
users = User.get_users()
user_list = []
# For loop
for user in user:
# For example, get image
user.image = Image.get_image(user.key)
user_list.append(user)
# If I print or log this user in the for loop, I see a result
logging.info(user.image) # WORKS!
for ul in user_list:
print ul.image # Results in None/ATTR Error
なぜこれが起こっているのか、そしてこの目標を達成する方法を誰かに説明してもらえますか?
フォームを検索しましたが、何も見つかりませんでした。