Google App Engine:如何以编程方式访问Model类的属性?

时间:2008-09-18 11:45:17

标签: python string google-app-engine

我有一个模型类:

class Person(db.Model):
  first_name = db.StringProperty(required=True)
  last_name = db.StringProperty(required=True)

我在p中有一个此类的实例,字符串s包含值'first_name'。我想做点什么:

print p[s]

p[s] = new_value

两者都会产生TypeError

有人知道我怎么能达到我想要的目的吗?

5 个答案:

答案 0 :(得分:7)

如果模型类足够智能,它应该识别标准的Python方法。

尝试:

getattr(p, s)
setattr(p, s, new_value)

还有hasattr可用。

答案 1 :(得分:3)

非常感谢Jim,我正在寻找的确切解决方案是:

p.properties()[s].get_value_for_datastore(p)

对所有其他受访者,谢谢你的帮助。我也希望Model类能够实现python标准的方法,但无论出于何种原因,它都没有。

答案 2 :(得分:1)

getattr(p, s)
setattr(p, s, new_value)

答案 3 :(得分:1)

尝试:

p.model_properties()[s].get_value_for_datastore(p)

请参阅the documentation

答案 4 :(得分:-1)

p.first_name =“新名字” p.put()

或p = Person(first_name =“Firsty”,               last_name =“Lasty”) p.put()