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()