首页 > 其他 > 详细

odoo10 关于针对模型1的布尔值设置模型2视图的必输(展示)与否

时间:2020-01-28 15:39:45      阅读:86      评论:0      收藏:0      [点我收藏+]

场景:模型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方法,设置需要的权限

 

 

odoo10 关于针对模型1的布尔值设置模型2视图的必输(展示)与否

原文:https://www.cnblogs.com/pywjh/p/12238104.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!