相关疑难解决方法(0)

嵌套序列化程序中的上下文django rest框架

如果我有一个嵌套的序列化程序:

class ChildSerializer(ModelSerializer):
    class Meta:
        fields = ('c_name', )
        model = Child


class ParentSerializer(ModelSerializer):

    child = ChildSerializer(many=True, read_only=True)

    class Meta:
        model = Parent
        fields = ('p_name', 'child')
Run Code Online (Sandbox Code Playgroud)

我想访问嵌套序列化器中的上下文,我该怎么做?据我所知,上下文没有传递给孩子.

我希望能够在字段上为每个用户实现一个权限模型,因为我重写了ModelSerializer的get_fields()方法:

def get_fields(self):
    fields = super().get_fields()
    ....
    for f in fields:
        if has_rights(self.context['request'].user, f, "read"):
            ret_val[f] = fields[f]
    ....
    return ret_val
Run Code Online (Sandbox Code Playgroud)

这适用于常规序列化程序,但是当嵌套子项传递给get_fields()时,上下文以及请求和用户不可用.串行器嵌套时如何访问上下文?

django serialization python-3.x django-rest-framework

25
推荐指数
4
解决办法
4612
查看次数