[英]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.