2009-05-26 46 views
0

設置最大遞歸深度我對谷歌的App Engine創建一個Django模型,而序列化與外鍵的Django模型,以JSON

Model A(): 
    propA = ReferenceProperty(B) 

Model B(): 
    propB = ReferenceProperty(C) 

Model C(): 
    propC = ReferenceProperty(B) 

我已經寫了自定義Django的序列化,這將用於的ReferenceProperty獲取數據(s)並沿着初始模型序列化。

當我嘗試序列化型號A的實例時,會出現此問題。我的自定義序列將努力讓propA,它包含模型C參考這樣的序列化器將獲取C型,它包含模型B參考和遞歸的推移和。有沒有什麼辦法可以在深度說2後停止遞歸?

我的串行是link text

P.S的定製版本:我願意出版我的代碼,如果這似乎是必要的。由於我不在我的開發機器上,因此我目前還沒有附加代碼。

謝謝,
Arun Shanker Prasad。

回答

0

爲什麼你不正確地遞歸?任何遞歸操作必須有一個base case,否則它會一直持續下去,正如問題所示。

2

只需修改您的函數以採取「深度」參數。任何時候你關注一個ReferenceProperty,調用深度小於傳入的深度的函數。如果函數調用的深度爲== 0,則返回None,或者其他任何佔位符值適合您的情況。

0

我試圖找到一個與Google App Engine一起使用並遵循關係的序列化程序。您是否可以發佈修改後的代碼?