谷歌应用引擎 - python,迭代数据模型属性

时间:2014-03-31 15:32:50

标签: python google-app-engine google-cloud-datastore

在下面的代码中,我希望迭代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 + ...,但我反对这样做,因为如果我这样做并且我计划向userData添加一个新属性,我将不得不更改for循环中的代码。相反,我只是计划将该属性添加到listOfUserData,这使它更容易。

感谢任何建议/帮助。

谢谢, Krishna Chaitanya

1 个答案:

答案 0 :(得分:2)

使用getattr方法从对象获取属性。在您的代码示例中,以下内容应该有效:

myString += getattr(eachObject, everyElement)