• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python fields.get_attribute函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中rest_framework.fields.get_attribute函数的典型用法代码示例。如果您正苦于以下问题:Python get_attribute函数的具体用法?Python get_attribute怎么用?Python get_attribute使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了get_attribute函数的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: get_attribute

 def get_attribute(self, instance):
     # We customize `get_attribute` here for performance reasons.
     # For relationships the instance will already have the pk of
     # the related object. We return this directly instead of returning the
     # object itself, which would require a database lookup.
     try:
         instance = get_attribute(instance, self.source_attrs[:-1])
         return PKOnlyObject(pk=instance.serializable_value(self.source_attrs[-1]))
     except AttributeError:
         return get_attribute(instance, self.source_attrs)
开发者ID:IvanAlegre,项目名称:django-rest-framework,代码行数:10,代码来源:relations.py


示例2: get_attribute

    def get_attribute(self, instance):
        if self.use_pk_only_optimization() and self.source_attrs:
            # Optimized case, return a mock object only containing the pk attribute.
            try:
                instance = get_attribute(instance, self.source_attrs[:-1])
                return PKOnlyObject(pk=instance.serializable_value(self.source_attrs[-1]))
            except AttributeError:
                pass

        # Standard case, return the object instance.
        return get_attribute(instance, self.source_attrs)
开发者ID:Azeez09,项目名称:remo,代码行数:11,代码来源:relations.py


示例3: get

    def get(self, request):
        user = request.user

        forms_context_dict = {}
        form_class_context_key_user_field_tuples = [
            [InstituteAddressForm, 'insti_address_form', ('insti_address',)],
            [ProgramForm, 'program_form', ('program',)],
            [SexUpdateForm, 'sex_update_form', ('userprofile', 'sex',)],
        ]

        for form_class, context_key, user_attr in form_class_context_key_user_field_tuples:
            try:
                form = form_class(initial=attr_to_dict(get_attribute(user, user_attr), key=user_attr[-1]))
            except (AttributeError, ObjectDoesNotExist):
                form = form_class()
            forms_context_dict[context_key] = form

        mobile_numbers = ContactNumber.objects.all().filter(user=user).order_by('-id')
        secondary_emails = SecondaryEmail.objects.all().filter(user=user).order_by('-id')
        user_profile = user.userprofile
        gpo_email = user.email
        ldap_number = user_profile.mobile
        roll_number = user_profile.roll_number

        request_context = {
            'mobile_numbers': mobile_numbers,
            'secondary_emails': secondary_emails,
            'gpo_email': gpo_email,
            'ldap_number': ldap_number,
            'roll_number': roll_number,
            'user_profile_picture': model_field_media_url(user.userprofile.profile_picture),
        }
        request_context.update(forms_context_dict)

        return render(request, 'user_resources/home.html', request_context)
开发者ID:Anay14,项目名称:ldap-oauth2,代码行数:35,代码来源:home.py


示例4: get_attribute

    def get_attribute(self, instance):
        if self.use_pk_only_optimization() and self.source_attrs:
            # Optimized case, return a mock object only containing the pk attribute.
            try:
                instance = get_attribute(instance, self.source_attrs[:-1])
                value = instance.serializable_value(self.source_attrs[-1])
                if is_simple_callable(value):
                    # Handle edge case where the relationship `source` argument
                    # points to a `get_relationship()` method on the model
                    value = value().pk
                return PKOnlyObject(pk=value)
            except AttributeError:
                pass

        # Standard case, return the object instance.
        return get_attribute(instance, self.source_attrs)
开发者ID:blag,项目名称:django-rest-framework,代码行数:16,代码来源:relations.py


示例5: get_attribute

    def get_attribute(self, instance):
        # Can't have any relationships if not created
        if not instance.pk:
            return []

        relationship = get_attribute(instance, self.source_attrs)
        return relationship.all() if (hasattr(relationship, "all")) else relationship
开发者ID:akarys92,项目名称:authTest,代码行数:7,代码来源:relations.py


示例6: get_url

 def get_url(self, obj, view_name, request, format):
     if hasattr(obj, 'pk') and obj.pk is None:
         return None
     lookup_url_kwargs = {}
     for lookup_field, lookup_url_kwarg in zip(self.lookup_fields, self.lookup_url_kwargs):
         lookup_value = get_attribute(obj, lookup_field.replace('__', '.').split('.'))
         lookup_url_kwargs[lookup_url_kwarg] = lookup_value
     return self.reverse(view_name, kwargs=lookup_url_kwargs, request=request, format=format)
开发者ID:ninemoreminutes,项目名称:doctorf,代码行数:8,代码来源:fields.py


示例7: get_attribute

 def get_attribute(self, instance):
     """
     Given the *outgoing* object instance, return the primitive value
     that should be used for this field.
     """
     try:
         return fields.get_attribute(instance, self.source_attrs)
     except (KeyError, AttributeError) as exc:
         return None if self.default == fields.empty else self.default
开发者ID:ZhangBohan,项目名称:GuppiesWechat,代码行数:9,代码来源:utils.py


示例8: get_url

    def get_url(self, obj, view_name, request, format):
        url = super().get_url(obj, view_name, request, format)

        if url and self.__query_params:
            get = lambda x: x(obj) if callable(x) else get_attribute(obj, x.split('.'))
            params = [(key, get(value)) for key, value in self.__query_params.items()]
            url = url + '?' + urlencode(params)

        return url
开发者ID:Aalto-LeTech,项目名称:a-plus,代码行数:9,代码来源:serializers.py


示例9: get_attribute

    def get_attribute(self, instance):
        # Can't have any relationships if not created.
        if hasattr(instance, 'pk') and instance.pk is None:
            return []

        queryset = self.queryset
        if hasattr(queryset, '__call__'):
            queryset = queryset(self.child_relation, instance)
        else:
            relationship = get_attribute(instance, self.source_attrs)
            queryset = relationship.all() if (hasattr(relationship, 'all')) else relationship
        return queryset
开发者ID:HelloLily,项目名称:hellolily,代码行数:12,代码来源:fields.py


示例10: get_related_instance

    def get_related_instance(self):
        parent_obj = self.get_object()
        parent_serializer = self.serializer_class(parent_obj)
        field_name = self.get_related_field_name()
        field = parent_serializer.fields.get(field_name, None)

        if field is not None:
            try:
                instance = field.get_attribute(parent_obj)
            except SkipField:
                instance = get_attribute(parent_obj, field.source_attrs)
            else:
                if isinstance(instance, PKOnlyObject):
                    # need whole object
                    instance = get_attribute(parent_obj, field.source_attrs)
            return instance
        else:
            try:
                return getattr(parent_obj, field_name)
            except AttributeError:
                raise NotFound
开发者ID:django-json-api,项目名称:django-rest-framework-json-api,代码行数:21,代码来源:views.py


示例11: get_attribute

 def get_attribute(self, obj, requested_language=None):
     source = self.source or self.field_name
     field = fields.get_attribute(obj, source.split("."))
     if not field:
         return None
     request = self.context.get("request", None)
     if requested_language is None:
         if request and request.method == "GET" and "lang" in request.GET:
             requested_language = request.GET["lang"]
     if requested_language:
         return self.fetch_single_translation(obj, source, field, requested_language)
     else:
         return self.fetch_all_translations(obj, source, field)
开发者ID:waseem18,项目名称:zamboni,代码行数:13,代码来源:fields.py


示例12: get_attribute

    def get_attribute(self, obj):
        source = self.source or self.field_name
        field = fields.get_attribute(obj, source.split('.'))

        if not field:
            return None

        requested_language = None

        request = self.context.get('request', None)
        if request and request.method == 'GET' and 'lang' in request.GET:
            requested_language = request.GET['lang']

        if requested_language:
            return self.fetch_single_translation(obj, source, field,
                                                 requested_language)
        else:
            return self.fetch_all_translations(obj, source, field)
开发者ID:Osmose,项目名称:olympia,代码行数:18,代码来源:fields.py


示例13: get_attribute

 def get_attribute(self, instance):
     return get_attribute(instance, self.source_attrs)
开发者ID:Gointer,项目名称:YAK-server,代码行数:2,代码来源:fields.py


示例14: extract_relationships

    def extract_relationships(fields, resource, resource_instance):
        # Avoid circular deps
        from rest_framework_json_api.relations import ResourceRelatedField

        data = OrderedDict()

        # Don't try to extract relationships from a non-existent resource
        if resource_instance is None:
            return

        for field_name, field in six.iteritems(fields):
            # Skip URL field
            if field_name == api_settings.URL_FIELD_NAME:
                continue

            # Skip fields without relations
            if not isinstance(field, (relations.RelatedField, relations.ManyRelatedField, BaseSerializer)):
                continue

            source = field.source
            try:
                relation_instance_or_manager = get_attribute(resource_instance, source.split('.'))
            except AttributeError:
                # if the field is not defined on the model then we check the serializer
                # and if no value is there we skip over the field completely
                serializer_method = getattr(field.parent, source, None)
                if serializer_method and hasattr(serializer_method, '__call__'):
                    relation_instance_or_manager = serializer_method(resource_instance)
                else:
                    continue

            # relation_type = utils.get_related_resource_type(field)

            if isinstance(field, relations.HyperlinkedIdentityField):
                relation_type = utils.get_related_resource_type(field)
                # special case for HyperlinkedIdentityField
                relation_data = list()

                # Don't try to query an empty relation
                relation_queryset = relation_instance_or_manager.all() \
                    if relation_instance_or_manager is not None else list()

                for related_object in relation_queryset:
                    relation_data.append(
                            OrderedDict([('type', relation_type), ('id', encoding.force_text(related_object.pk))])
                    )

                data.update({field_name: {
                    'links': {
                        "related": resource.get(field_name)},
                    'data': relation_data,
                    'meta': {
                        'count': len(relation_data)
                    }
                }})
                continue

            if isinstance(field, ResourceRelatedField):
                # special case for ResourceRelatedField
                relation_data = {
                    'data': resource.get(field_name)
                }

                field_links = field.get_links(resource_instance)
                relation_data.update(
                        {'links': field_links}
                        if field_links else dict()
                )
                data.update({field_name: relation_data})
                continue

            if isinstance(field, (relations.PrimaryKeyRelatedField, relations.HyperlinkedRelatedField)):
                relation_id = relation_instance_or_manager.pk if resource.get(field_name) else None
                relation_type = utils.get_related_resource_type(field)

                relation_data = {
                    'data': (
                        OrderedDict([('type', relation_type), ('id', encoding.force_text(relation_id))])
                        if relation_id is not None else None)
                }

                relation_data.update(
                        {'links': {'related': resource.get(field_name)}}
                        if isinstance(field, relations.HyperlinkedRelatedField) and resource.get(field_name) else dict()
                )
                data.update({field_name: relation_data})
                continue

            if isinstance(field, relations.ManyRelatedField):

                if isinstance(field.child_relation, ResourceRelatedField):
                    # special case for ResourceRelatedField

                    if field_name not in resource:
                        continue


                    relation_data = {
                        'data': resource.get(field_name)
                    }
#.........这里部分代码省略.........
开发者ID:Mariana-Tek,项目名称:django-rest-framework-json-api,代码行数:101,代码来源:renderers.py


示例15: extract_included

    def extract_included(fields, resource, resource_instance, included_resources):
        # this function may be called with an empty record (example: Browsable Interface)
        if not resource_instance:
            return

        included_data = list()
        current_serializer = fields.serializer
        context = current_serializer.context
        include_config = utils.get_included_configuration(current_serializer)
        included_resources = copy.copy(included_resources)

        for field_name, field in six.iteritems(fields):
            # Skip URL field
            if field_name == api_settings.URL_FIELD_NAME:
                continue

            # Skip fields without relations or serialized data
            if not isinstance(field, (relations.RelatedField, relations.ManyRelatedField, BaseSerializer)):
                continue

            # Skip disabled fields
            if include_config[field_name] == False:
                continue

            try:
                included_resources.remove(field_name)
            except ValueError:
                # Skip fields not in requested included resources
                continue

            try:
                relation_instance_or_manager = get_attribute(resource_instance, field.source.split('.'))
            except AttributeError:
                try:
                    # For ManyRelatedFields if `related_name` is not set we need to access `foo_set` from `source`
                    relation_instance_or_manager = get_attribute(resource_instance, field.child_relation.source.split('.'))
                except AttributeError:
                    if not hasattr(current_serializer, field.source):
                        continue
                    serializer_method = get_attribute(current_serializer, field.source.split('.'))
                    relation_instance_or_manager = serializer_method(resource_instance)

            new_included_resources = [key.replace('%s.' % field_name, '', 1)
                                      for key in included_resources
                                      if field_name == key.split('.')[0]]
            serializer_data = resource.get(field_name)

            serializer_instances = []

            if isinstance(field, relations.ManyRelatedField):
                # # serializer_class = include_config.get(field_name)
                # serializer_class = utils.get_serializer_from_instance_and_serializer()
                # serializer_instance = serializer_class(relation_instance_or_manager.all(), many=True, context=context)

                if isinstance(current_serializer.instance, Iterable):
                    iterable = []
                    for obj in current_serializer.instance:
                        iterable += field.get_attribute(obj)
                else:
                    iterable = field.get_attribute(current_serializer.instance)

                for item in iterable:
                    serializer_class = utils.get_serializer_from_instance_and_serializer(item,
                                                                                         current_serializer,
                                                                                         field_name)
                    serializer_instance = serializer_class(item, context=context)
                    serializer_instances.append(serializer_instance)

            if isinstance(field, relations.RelatedField):
                # serializer_class = include_config.get(field_name)
                if relation_instance_or_manager is None:
                    continue

                serializer_class = utils.get_serializer_from_instance_and_serializer(relation_instance_or_manager, current_serializer, field_name)
                serializer_instance = serializer_class(relation_instance_or_manager, context=context)
                serializer_instances.append(serializer_instance)

            for serializer_instance in serializer_instances:

                serializer_data = serializer_instance.data

                relation_type = utils.get_resource_type_from_serializer(serializer_instance.__class__)

                # Get the serializer fields
                serializer_fields = utils.get_serializer_fields(serializer_instance)
                if serializer_data:
                    included_data.append(
                            JSONRenderer.build_json_resource_obj(
                                    serializer_fields, serializer_data,
                                    serializer_instance.instance, relation_type)
                    )
                    included_data.extend(
                            JSONRenderer.extract_included(
                                    serializer_fields, serializer_data, serializer_instance.instance, new_included_resources
                            )
                    )

        return utils.format_keys(included_data)
开发者ID:Mariana-Tek,项目名称:django-rest-framework-json-api,代码行数:98,代码来源:renderers.py


示例16: get_iterable

 def get_iterable(self, instance, source):
     relationship = get_attribute(instance, [source])
     return relationship.all() if (hasattr(relationship, 'all')) else relationship
开发者ID:brainwane,项目名称:django-rest-framework,代码行数:3,代码来源:relations.py


示例17: zip_instance_extra_with_iterable

def zip_instance_extra_with_iterable(instance, iterable, extra):
    extra_attrs = dict(
        (key, get_attribute(instance, attrs.split('.')))
        for key, attrs in extra.items()
    )
    return (AttributeProxy(item, **extra_attrs) for item in iterable)
开发者ID:Aalto-LeTech,项目名称:a-plus,代码行数:6,代码来源:serializers.py


示例18: get_attribute

 def get_attribute(self, instance):
     if instance.is_tax_known:
         return super(TaxIncludedDecimalField, self).get_attribute(instance)
     if self.excl_tax_field:
         return get_attribute(instance, (self.excl_tax_field, ))
     return self.excl_tax_value
开发者ID:pombredanne,项目名称:django-oscar-api,代码行数:6,代码来源:fields.py



注:本文中的rest_framework.fields.get_attribute函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python fields.get_component函数代码示例发布时间:2022-05-26
下一篇:
Python exceptions.APIException类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap