Google App Engine - Python,迭代数据模型属性
在下面的代码中,我想要遍历用户数据对象(userData Object)里的所有变量。我想知道该怎么做。代码myString += eachObject.everyElement就是我遇到问题的地方。我搞不清楚怎么遍历一个对象里的每个元素。
class userData(ndb.Model):
name = ndb.StringProperty()
age = ndb.IntegerProperty()
nationality = ndb.StringProperty()
date = ndb.DateTimeProperty()
class MyApp(webapp2.RequestHandler):
def post(self):
listOfUserData = ['name', 'age', 'nationality', 'date']
myString= ""
#Here, I have few userData objects and I wish to get all
#the userData perperties and form a string
myUserDataObjects = [userData1, userData2, userData3]
for eachObject in myUserDataObjects:
for everyElement in listOfUserData:
######################################
#This is the place where I need help##
######################################
myString += eachObject.everyElement
self.response.out.write(myString)
我知道可以通过写成 eachObject.name + eachObject.age + ... 来访问这些元素,但我不想这样做,因为如果我这样做了,假如我想给用户数据添加一个新属性,我就得在循环里的代码也进行修改。相反,我只是打算把那个属性添加到listOfUserData里,这样会更简单。
任何建议或帮助都非常感谢。
谢谢,
Krishna Chaitanya
1 个回答
2
使用 getattr 方法可以从一个对象中获取某个属性。在你的代码示例中,下面的代码应该可以正常工作:
myString += getattr(eachObject, everyElement)