1

何を試しても、単純な 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 ...
4

0 に答える 0