我对 Python 比较陌生,来自 PHP 世界。在 PHP 中,我会例行地获取一行,该行对应于数据库中的对象,比如用户,并在将用户对象传递给我的视图页面之前为其添加属性。例如,用户具有属性 email、name 和 id。我从数据库中获取了 5 个用户,并在一个 for 循环中为用户分配了一个动态属性,比如图像。
这似乎不适用于 for 循环中的 Python/Google App Engine 数据存储模型(我认为它对数据存储模型的作用比 python 更多)。它在 for 循环中工作(这意味着我可以在 for 循环中引用 user.image,但是一旦 for 循环结束,所有对象似乎都不再具有新的属性 image 了。
这是一个代码示例:
# 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
谁能向我解释为什么会发生这种情况以及如何实现这一目标?
我已经搜索了表格,但我找不到任何东西。