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方法,设置需要的权限

     

     
  • 相关阅读:
    打造自己的LINQ Provider(上):Expression Tree揭秘
    asp.net MVC 开篇
    .net面试基础
    asp.net MVC3.0
    数字万用表的四位半,三位半都是什么意思?
    lpsz,sz, 变量的命名规范
    老毛桃PE系统安装篡改主页3456.com和强制安装绿色浏览器lvseie.exe
    PC电源厂商及品牌篇(台厂及国际品牌篇)(第二版)
    Borland C++ 语法摘要
    Win8打开文件夹卡顿
  • 原文地址:https://www.cnblogs.com/pywjh/p/12238104.html
Copyright © 2011-2022 走看看