Google App Engine - Python,迭代数据模型属性

2 投票
1 回答
759 浏览
提问于 2025-04-18 00:41

在下面的代码中,我想要遍历用户数据对象(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)

撰写回答