2016-11-28 44 views
3

使用Django REST Framework,我有2個序列化器:PageSerializerCommentSerializer將上下文從一個序列化器傳遞到另一個序列化器?

CommentSerializer依賴於一些額外的「上下文」值,但它不直接得到它,而是它需要從PageSerializer得到它,因爲它們具有嵌套關係。

所以我需要有這樣的事情:

class CommentSerializer(serializers.ModelSerializer): 
    ... 
    my_field = serializers.SerializerMethodField() 

    def get_my_field(self, comment): 
     my_value = self.context['my_value'] 
     ... 

class PageSerializer(serializers.ModelSerializer): 
    ... 
    comments = CommentSerializer(
     many=True, 
     context={'my_value': my_value} # my_value doesn't exist until __init__ is called, so I can't pass it 
    ) 

... 
my_value = 1 
page_serializer = PageSerializer(page, context={'my_value': my_value}) 

但是,當然,這個代碼不能工作。
我可以在這裏做什麼樣的解決方法?

回答

3

當您在序列化程序中定義關係時,PageSerializer的上下文將自動傳遞給CommentSerializer,當頁面的註釋被序列化時。

所以,只要定義comments = CommentSerializer(many=True)就可以了。

+0

哦..這是一種解脫,謝謝! – user3134477

相關問題