meta.py 文件源码

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

项目:drf-metadata 作者: night-crawler 项目源码 文件源码
def get_meta(self) -> t.Generator[t.Dict, None, None]:
        """
        :return: generator
        list(metadata_obj.get_meta()) -> [abstract_field_obj1, abstract_field_obj2, ...]
        """
        fields_by_name = OrderedDict()
        for field_data in self.fields:
            fields_by_name[field_data['name']] = field_data

        for k, v_callable in self.__class__.__dict__.items():
            # method `get_field_<NAME>` used for updates later
            if k.startswith('get_field_'):  # get_field_ ????????? ???????????? ????
                continue
            if not k.startswith('get_'):
                continue
            # check dynamic get_%s fields
            # method get_%s must return {'name': '<NAME>'}, where <name> is a real field name
            res = v_callable(self, self.request)
            fields_by_name[res['name']] = res

        fields_order = self.order or fields_by_name.keys()

        for field_name in fields_order:
            field_value = fields_by_name[field_name]
            # method should update field with returned dict
            method = getattr(self, 'get_field_%s' % field_name, None)
            if callable(method):
                field_value.update(method(field_name, self.request))

            yield field_value

    # noinspection PyMethodMayBeStatic,PyUnusedLocal
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号