8

我有一个模型类:

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.

有人知道我怎样才能实现我想要的吗?

4

5 回答 5

7

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

尝试:

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

也有 hasattr 可用。

于 2008-09-18T12:14:37.367 回答
3

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

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

感谢所有其他受访者的帮助。我也希望 Model 类实现这样做的 python 标准方式,但无论出于何种原因,它都没有。

于 2008-09-18T22:46:08.817 回答
1
getattr(p, s)
setattr(p, s, new_value)
于 2008-09-18T11:54:13.283 回答
1

尝试:

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

请参阅文档

于 2008-09-18T12:06:25.517 回答
-1

p.first_name = "新名字" p.put()

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

于 2008-10-04T07:10:55.510 回答