2012-03-11 74 views
0

我有以下數據存儲模型:Google App Engine關係表和分頁?

class One(db.Model): 
    OneDateAdded = db.DateTimeProperty(auto_now_add=True) 
    OneTitle= db.StringProperty() 
    OneLink= db.LinkProperty() 

class Two(db.Model): 
    TwoDateAdded = db.DateTimeProperty(auto_now_add=True) 
    TwoTitle= db.StringProperty() 
    TwoLink= db.LinkProperty() 

class Three(db.Model): 
    ThreeDateAdded = db.DateTimeProperty(auto_now_add=True) 
    ThreeTitle= db.StringProperty() 
    ThreeisSomething = db.BooleanProperty(default=False) 
    ThreeLink= db.LinkProperty() 

和關係表:

class Relation(db.Model): 
     RelationDateAdded = db.DateTimeProperty(auto_now_add=True) 
     RelationOne = db.ReferenceProperty(One) 
     RelationTwo = db.ReferenceProperty(Two) 
     RelationThree = db.ReferenceProperty(Three) 

當我試圖實現PagedQuery庫時,我是以防萬一我不能使用某種問題由於GAE的限制而加入。

我wan't做到的是在我的relationtable查詢,其中RelationThree.ThreeisSomething = True

循環執行一組結果似乎並沒有成爲一個解決方案,因爲尋呼是行不通的(得10個結果2是真8都是假的導致頁面只有2結果..)

有沒有辦法做一些簡單的像這樣:(不工作)

myPagedQuery = paging.PagedQuery(Release.all().filter('Three.ThreeisSomething =', True), 10) 
+1

您無法在數據存儲中執行此操作。您的選擇基本上是反規範化或使用新的雲SQL服務。 – geoffspear 2012-03-11 19:17:47

+0

我希望得到另一個解決方案,但期待這個答案..謝謝! – crimsdings 2012-03-11 21:44:58

回答

0

您可以使用limitoffset documen ted here。請注意,使用它們可能會很昂貴 - 設置偏移量爲100,限制爲10實際上會加載110條記錄,併爲您提供最後的10條記錄。