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

时间:2020-03-06 14:20:54  来源:igfitidea点击:

我有一个模型课:

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

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

解决方案

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

尝试:

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

请参阅文档。

如果模型类足够智能,则它应该识别执行此操作的标准Python方法。

尝试:

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

也有hasattr可用。

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

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

对于所有其他答复者,感谢帮助。我也希望Model类实现此操作的python标准方式,但是由于某种原因,它没有实现。

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

或者p = Person(first_name =" Firsty",
last_name ="时髦的")
p.put()