簡體   English   中英

GAE數據存儲區渴望在python API中加載

[英]GAE datastore eager loading in python api

我有兩個關系一對多的模型:

類Question(db.Model):

QuestionText = db.StringProperty(multiline = False)

類Answer(db.Model):

answerText = db.StringProperty(multiline = False)

問題= db.ReferenceProperty(問題,collection_name ='答案')

我在Flex中實現了前端,並使用pyamf加載數據。

當我嘗試加載所有包含相關問題的答案時,所有功能都可以按需運行,並且可以訪問字段

回答問題

但是,在加載問題的情況下(例如,通過Questions.all()),“ question.answers”保持為空/空

(盡管在服務器/ python端,我可以毫無問題地修改question.answers-可能是在延遲加載之后)。

那么是否可以同時加載所有問題和答案?

(我知道這在JPA Java API中是可能的,但是python呢?)

我應該使用其他設置,GQL查詢或Django框架來使其正常工作嗎?

默認情況下,PyAMF不會對ReferenceProperty字段進行編碼,除非已由service方法專門加載了它們。 這是有目的的,因此您最終不必進行過多編碼。

PyAMF尋找一個特殊的類屬性__amf__ ,它用於為該類型的實例自定義編碼和解碼過程。 可以在文檔中找到更多信息。

因此,為所有問題強制所有答案的編碼,您應該能夠:

class Question(db.Model):
    class __amf__:
        static = ('answers',)

    questionText = db.StringProperty(multiline=False)

class Answer(db.Model):
    answertText = db.StringProperty(multiline=False)
    question = db.ReferenceProperty(Question, collection_name='answers')

設置靜態屬性將確保每個Question實例都具有answers屬性集(通過getattr設置),這將轉而用於所需的數據存儲區查找。

重要的是不要讓此設置適用於整個應用程序,因此任何問題都將具有出現在實例上的“答案”屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM