odoo 的加载流程 二、load_views

由于加载页面首先显示  load_views,因此分析此函数,看能做什么文章

@api.model
    def load_views(self, views, options=None):
        """ Returns the fields_views of given views, along with the fields of
            the current model, and optionally its filters for the given action.

        :param views: list of [view_id, view_type]
        :param options['toolbar']: True to include contextual actions when loading fields_views
        :param options['load_filters']: True to return the model's filters
        :param options['action_id']: id of the action to get the filters
        :return: dictionary with fields_views, fields and optionally filters
        """
        options = options or {}
        result = {}

        toolbar = options.get('toolbar')
        result['fields_views'] = {
            v_type: self.fields_view_get(v_id, v_type if v_type != 'list' else 'tree',
                                         toolbar=toolbar if v_type != 'search' else False)
            for [v_id, v_type] in views
        }
        result['fields'] = self.fields_get()

        if options.get('load_filters'):
            result['filters'] = self.env['ir.filters'].get_filters(self._name, options.get('action_id'))


        return result

 

先分析主要函数 fields_view_get

通过调试,先看整体,返回 result

{
    'type':'form',
    'name':'zhy.sale.form'
    'arch':'数据库中 xml内容',
    'model':zhy.sale,
    'fields': '根据权限等可以显示的字段'}

可以看出 此函数主要作用 根据view_id 。从view 表得到 view model 的 详细信息

只看主要信息

 xarch, xfields = View.postprocess_and_fields(self._name, etree.fromstring(result['arch']), view_id)
        result['arch'] = xarch
        result['fields'] = xfields

xarch 就是 数据库里面的 内容,xfields 是 modle 的 所有字段

进入VIEW 的函数,可以看到重要的信息

#递归处理字段
        fields_def = self.postprocess(model, node, view_id, False, fields)
        self._postprocess_access_rights(model, node)
        return arch, fields

递归处理 权限和字段。下一篇分析 view 的 postprocess (xml->modle )的函数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值