假設我有如何不自動取消引用Google App Engine中的db.ReferenceProperty?
class Foo(db.Model):
bar = db.ReferenceProperty(Bar)
foo = Foo.all().get()
有沒有辦法爲我做foo.bar不以數據存儲正在作出查詢?文檔說foo.bar
將是Key
的一個實例,因此我期望能夠執行foo.bar.id()
並能夠獲得與foo
關聯的Bar
的id
,但它似乎不能以此方式工作。
PS:我指的是文檔的一部分可以在這裏找到:
和它說的:
「應用程序可以明確地db.get方法()的ReferenceProperty(它是一個Key)的值來測試引用的實體是否存在。「
get_value_for_datastore確實是正確的方法 - 特別是ModelClass.property.get_value_for_datastore(entity)。 – 2010-03-07 11:52:37
謝謝,亞歷克斯。我也閱讀了部分文檔。對我來說,做foo.bar.id()會自動進入數據存儲區並不清楚,因爲它說「好像它是一個模型實例」。我認爲可能是這樣的情況,foo.bar返回一個代理,它不會自動去數據存儲,除非它真的需要,如果我做foo.bar.id(),情況不會如此,因爲這些信息是foo本身的一部分。 – allyourcode 2010-03-07 22:56:47
這證明,如果您計劃以某種方式存儲二進制數據,將其分成兩種類型,並且引用包含元數據但不包含二進制數據的元素,這是個好主意,因爲讀取較小的實體會提取較大的元素。 – 2010-03-29 20:27:44