何を試しても、単純な OneToMany 関係のリクエスト ハンドラーで再帰を解決できません。Father 1 : N Sons としましょう。
FatherHandler は、その結果セットで sons_set (息子のリスト) を返します。SonHandler は結果セットで親オブジェクトを返します。
フィールド、除外、設定はハンドラー (および背後のモデル) に静的にバインドされているように見えるため、返されるフィールドを動的に変更することはできないようで、常に再帰が発生します。(たとえば、SonHandler から呼び出されたときにフィールド リストから sons_set を除外しようとしましたが、FatherHandler の初期設定はまだ有効であるようです)
class FatherHandler(GenericHandler):
model = Father
exclude = () # to also show 'id' field
fields = ('id', 'name', ('son_set', ('id', 'name')))
allowed_methods = ('GET', 'POST', 'PUT')
class SonHandler(GenericHandler):
model = Son
exclude = () # to also show 'id' field
fields = ('id', 'name', ('father', ('id', 'name')))
allowed_methods = ('GET', 'POST', 'PUT', 'DELETE')
def read(self, request, key=None):
FatherHandler.exclude = ('son_set')
# does not work ...