在Google App Engine中获取db.Model的隐式属性名称?

0 投票
1 回答
509 浏览
提问于 2025-04-16 05:13

我该如何获取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))

撰写回答