serializers.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:django-rest-witchcraft 作者: shosca 项目源码 文件源码
def build_nested_field(self, field_name, info, relationship, nested_depth):
        """
        Builds nested serializer to handle relationshipped model
        """
        target_model = relationship.mapper.class_
        nested_fields = self.get_nested_relationship_fields(target_model, info, relationship, nested_depth)

        field_kwargs = self.get_relationship_kwargs(relationship, nested_depth)
        field_kwargs = self.include_extra_kwargs(field_kwargs, self._extra_kwargs.get(field_name))
        nested_extra_kwargs = {}

        nested_info = model_info(target_model)
        if not field_kwargs.get('required', True):
            for nested_field in nested_info.primary_keys:
                nested_extra_kwargs.setdefault(nested_field, {}).setdefault('required', False)

        if not field_kwargs.get('allow_nested_updates', True):
            nested_depth = 0
            for nested_field in nested_info.properties:
                nested_extra_kwargs.setdefault(nested_field, {}).setdefault('read_only', True)
                nested_extra_kwargs.setdefault(nested_field, {}).pop('required', None)

        class NestedSerializer(ModelSerializer):

            class Meta:
                model = target_model
                session = self.session
                depth = max(0, nested_depth - 1)
                fields = nested_fields
                extra_kwargs = nested_extra_kwargs

        return type(target_model.__name__ + 'Serializer', (NestedSerializer, ), {})(**field_kwargs)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号