2010-10-08 35 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