Python rest_framework.serializers 模块,SerializerMethodField() 实例源码

我们从Python开源项目中,提取了以下6个代码示例,用于说明如何使用rest_framework.serializers.SerializerMethodField()

项目:django-returnfields    作者:podhmo    | 项目源码 | 文件源码
def setUp(self):
        from .models import User
        depends = self._getTarget()

        class ForDependsTestUserSerializer(serializers.ModelSerializer):
            class Meta:
                model = User
                fields = ('id', 'first_name', "last_name")

            first_name = serializers.SerializerMethodField()
            last_name = serializers.SerializerMethodField()

            @depends("username")
            def get_first_name(self, ob):
                return ob.username.split(" ", 1)[0]

            @depends("username")
            def get_last_name(self, ob):
                return ob.username.split(" ", 1)[1]
        self.Serializer = ForDependsTestUserSerializer
项目:django-returnfields    作者:podhmo    | 项目源码 | 文件源码
def setUp(self):
        from .models import User

        contextual = self._getTarget()

        def has_xxx_context(xxx, replaced):
            def check(token, context):
                return replaced if xxx in context else []
            return check

        class ForContextualTestUserSerializer(serializers.ModelSerializer):
            class Meta:
                model = User
                fields = ('id', 'username')

            username = serializers.SerializerMethodField()

            @contextual(has_xxx_context('with_username', 'username'))
            def get_username(self, ob):
                return ob.username.split(" ", 1)[0]
        self.Serializer = ForContextualTestUserSerializer
项目:oim-cms    作者:parksandwildlife    | 项目源码 | 文件源码
def __init__(self, *args, **kwargs):
        try:
            style_content = kwargs.pop("style_content")
        except:
            style_content = False
        try:
            ows_serializer_method = kwargs.pop('ows')
        except:
            ows_serializer_method = 'get'

        super(RecordSerializer, self).__init__(*args, **kwargs)
        self.fields['styles'] = StyleSerializer(many=True, required=False, style_content=style_content)
        if ows_serializer_method == 'post':
            self.fields['ows_resource'] = OwsResourceSerializer(write_only=True, required=False)
        elif ows_serializer_method == 'get':
            self.fields['ows_resource'] = serializers.SerializerMethodField(read_only=True)
项目:django-rest-messaging    作者:raphaelgyory    | 项目源码 | 文件源码
def compat_serializer_method_field(method_name=None):
    """ method_name changed in DRF > 3. See http://www.django-rest-framework.org/topics/3.0-announcement/#optional-argument-to-serializermethodfield. """
    if DRFVLIST[0] >= 3:
        return serializers.SerializerMethodField()
    else:
        return serializers.SerializerMethodField(method_name=method_name)
项目:django-returnfields    作者:podhmo    | 项目源码 | 文件源码
def setUp(self):
        from .models import User
        from .serializers import SkillSerializer

        contextual = self._getTarget()

        def has_nested(serializer_class, key_name, default):
            def _has_nested(token, context):
                if context.get(key_name, False):
                    name_list = token.translator.translate(serializer_class, None, context)
                    return ["{}__{}".format(token.queryname, name) for name in name_list]
                else:
                    return default
            return _has_nested

        class ForContextualTestUserSerializer(serializers.ModelSerializer):
            skills = serializers.SerializerMethodField()

            class Meta:
                model = User
                fields = ('id', 'username', 'skills')

            @contextual(has_nested(SkillSerializer, 'with_skills', default=[]))
            def get_skills(self, ob):
                if self.context.get("with_skills", False):
                    return SkillSerializer(ob.skills, many=True).data
                else:
                    return []

        self.Serializer = ForContextualTestUserSerializer
项目:oim-cms    作者:parksandwildlife    | 项目源码 | 文件源码
def __init__(self, *args, **kwargs):
        try:
            style_content = kwargs.pop("style_content")
        except:
            style_content = False

        super(StyleSerializer, self).__init__(*args, **kwargs)
        if style_content:
            self.fields['raw_content'] = serializers.SerializerMethodField(read_only=True)