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

     

     
  • 相关阅读:
    寒假一:打印沙漏
    秋季学期总结
    三位我尊敬的老师
    自我介绍
    polay计数原理
    2020-2021 ACM-ICPC, Asia Seoul Regional Contest
    2017-2018 ACM-ICPC Northern Eurasia(A.Archery Tournament)
    FTT简单入门板子
    佩尔方程最小解模板
    求组合数
  • 原文地址:https://www.cnblogs.com/pywjh/p/12238104.html
Copyright © 2011-2022 走看看