zoukankan      html  css  js  c++  java
  • odoo10 关于针对模型1的布尔值设置模型2视图的必输(展示)与否

    场景:模型1是通用配置模型,布尔值控制一些操作,模型2的值,必输、展示与否取决于通用配置的True或False,这样的情况,可以考使用compute.

    模型1(配置模型):_name = 'kthrp.account.general.setting'

    模型2(显示字段模型): _inherit = "kthrp.account.cost.center"

    模型1字段:

    # 导入唯一名称必输 (关联成本中心字段的必输)
    import_unique_name_is_required = fields.Boolean(string="Import Unique Name is Required", default=False)

    模型2字段:

    # 导入唯一名称
    import_unique_name = fields.Char(string="Import Unique Name", help="Using excel import function, the system identifies the specific cost center through this value when selecting the cost center")

    import_unique_name_is_required为True,import_unique_name界面必输

    import_unique_name_is_required为False,import_unique_name界面非必输

     

    思路:

    渲染模型2视图(后面统称视图2)时去获取模型1视图(后面统称视图1)的布尔字段值,再对应视图2设置权限。


    实现:

    视图1xml代码中,最开始的位置

    <record model="kthrp.account.general.setting" id="view_kthrp_account_general_setting">
            </record>

    解释

    <record model="模型1的模型名(.式)" id="自己设置一个id">
           </record>

    再下面的动作record中添加res_id:

    <record id="action_kthrp_account_general_setting" model="ir.actions.act_window">
                <field name="name">General Settings</field>
                <field name="res_model">kthrp.account.general.setting</field>
                <field name="view_type">form</field>
                <field name="view_mode">form</field>
                <field name="target">fullscreen</field>
                <field name="res_id" eval="ref('view_kthrp_account_general_setting')"/>
            </record>

    注意eval的值!


    然后再模型2中新建一个与模型1布尔值相同的字段名

    # 导入唯一名称
    import_unique_name = fields.Char(string="Import Unique Name", help="Using excel import function, the system identifies the specific cost center through this value when selecting the cost center")
    #前面的代码
    ############################################
    ​
    import_unique_name_is_required = fields.Boolean(default=False, compute = '_compute_import_unique_name')
    ​
    def _compute_import_unique_name(self):
      config_setting = self.env.ref('kthrp_account.view_kthrp_account_general_setting', raise_if_not_found=False) or False
      import_unique_name_is_required = config_setting and config_setting.import_unique_name_is_required or False
      for rec in self:
           rec.import_unique_name_is_required = import_unique_name_is_required

    解释:

    # 导入唯一名称
    import_unique_name = fields.Char(string="Import Unique Name", help="Using excel import function, the system identifies the specific cost center through this value when selecting the cost center")
    #前面的代码
    ############################################
    ​
    import_unique_name_is_required = fields.Boolean(default=False, compute = '_compute_import_unique_name') # 自己命名一个方法
    def _compute_import_unique_name(self):
        config_setting = self.env.ref('模型名.新建的record的id', raise_if_not_found=False) or False # 获取对应id的视图模型
        import_unique_name_is_required = config_setting and config_setting.import_unique_name_is_required or False # 获取模型1的布尔值
        for rec in self:
            rec.import_unique_name_is_required = import_unique_name_is_required # 赋给模型2新增的布尔值

    这样就可以讲模型1的布尔值实时的传递给模型2

     

    视图2的xml

    <group>
        <group>
            <field name="import_unique_name_is_required" invisible="0"/>
            
            .........
            
            <field name="import_unique_name" attrs="{'required':[('import_unique_name_is_required','=',True)]}"/>
        </group>

    使用attrs方法,设置需要的权限

     

     
  • 相关阅读:
    10 种保护 Spring Boot 应用的绝佳方法
    Redis 如何分析慢查询操作?
    Spring Boot 主类及目录结构介绍
    Redis 再牛逼,也得设置密码!!
    Spring Data Redis 详解及实战一文搞定
    Spring Boot Redis Cluster 实战干货
    超详细的 Redis Cluster 官方集群搭建指南
    Redis Linux 安装运行实战全记录
    hdu 4790 Just Random (思路+分类计算+数学)
    poj 1328 Radar Installation(贪心)
  • 原文地址:https://www.cnblogs.com/pywjh/p/12238104.html
Copyright © 2011-2022 走看看