在Google App Engine中获取db.Model的隐式属性名称?
我该如何获取Google App Engine中db.Model的隐式属性名称?具体来说,假设我有以下内容:
class Foo(db.Model):
specific = db.IntegerProperty()
class Bar(db.Model):
foo = db.ReferenceProperty(Foo, collection_name = "bars")
如果我尝试像这样获取Foo的属性名称:
my_foo = Foo(specific = 42)
for key, prop in my_foo.properties().iteritems()
print "HERE bars won't show up"
那么my_foo.bars这个属性就没有显示出来。难道我完全搞错了吗?
非常感谢任何帮助
已将模型编辑为Python,而不是Ruby
1 个回答
2
(这个模型定义看起来像是Python和Ruby的奇怪混合体。)
我不太明白你想要实现什么,但你可以通过查看模型的内部结构来获取模型属性的列表:
[x for x in dir(Foo) if isinstance(getattr(Foo,x), db.Property)]
如果你只是想把Bar的实例添加到Foo中,你应该创建新的Bar实例,并让它们的foo字段指向Foo的实例:
foo = Foo(specific=42)
foo.put()
Bar(foo=foo).put()
Bar(foo=foo).put()
logging.info("Foo bars: %r" % list(foo.bars))