2010-10-08 102 views
0

如何才能访问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") 

,如果我试图得到富的属性名称,像这样:

my_foo = Foo(specific = 42) 
for key, prop in my_foo.properties().iteritems() 
    print "HERE bars won't show up" 

那么my_foo.bars属性不露面。或者我完全错误?

任何帮助,不胜感激

编辑模式是Python的,而不是红宝石

回答

2

(即模型定义看起来像Python和Ruby的一个奇怪的混合体。)

我不清楚你在这里试图实现什么,但你可以通过自省得到一个模型属性成员列表:

[x for x in dir(Foo) if isinstance(getattr(Foo,x), db.Property)] 

如果你只是想栏的实例添加到富,你应该创建新实例酒吧与在富实例指着他们的富领域:

foo = Foo(specific=42) 
foo.put() 
Bar(foo=foo).put() 
Bar(foo=foo).put() 
logging.info("Foo bars: %r" % list(foo.bars)) 
+0

ReferenceProperties不会永久保存在一类反向引用。因此,没有创建具有在collection_name中指定的名称的属性单元“Bar”已被定义。 – 2010-10-08 20:03:31

+0

修正了模型defs。 – 2010-10-10 17:21:30

+0

关于获取房屋的建议似乎并不奏效(尽管这正是我想要做的)。猜猜我只是使用ListProperties的键。 – 2010-10-10 17:22:11