引用类型 “related” 字段=fields.类型(related=“某个字段.类字段”,store=true/false) #默认不存储 store=False
user_email = fields.Char('User Email', related='user_id.email', readonly=True)
user_login = fields.Char('User Login', related='user_id.login', readonly=True)
引用类型 “reference” Reference对应pg的字段类型为不定长的varchar reference是比related更高级的引用字段,可以指定该字段引用那些模型范围内的模型的哪些字段的值,范围更广。
@api.model
def _select_objects(self):
records = self.env['ir.model'].search([])
return [(record.model, record.name) for record in records] + [('', '')]
id_object = fields.Reference(string='内部参考', selection='_select_objects')
选择项 “selection” Selection字段类型一般作为下拉列表显示,selection 的选项内容基本是固定,但是针对一些特殊要求,根据权限组显示不同的 selection 内容,也可以通过动态创建选项的内容,下面简单介绍Selection的三种使用案例。
DICT_STYLE = [
('样式一', '样式一'),
('样式二', '样式二'),
('样式三', '样式三')
]
# 1、固定selection
type = fields.Selection([
('上架', '上架'),
('下架', '下架'),
], string='类型', default='上架')
style = fields.Selection(DICT_STYLE, string='样式', default='样式一')
根据权限组显示不同的 selection 内容 指定属性selection=’_selection_filter’表示引用_selection_filter函数进行不同权限组之间的内容显示。
# 你根据权限组显示不同的 selection 内容
add_type = fields.Selection(selection='_selection_filter', string='类型2')
@api.model
def _selection_filter(self):
"""
根据权限组显示不同的Selection值
"""
res_filter = [
('数学', '数学'),
('语文', '语文'),
]
if self.user_has_groups('base.group_system'):
res_filter += [('英语', '英语')]
elif self.user_has_groups('Amos_Demo.amos_demo_user'):
res_filter = res_filter
else:
res_filter = []
return res_filter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
filter = fields.Selection(string=u'等级', selection='_selection_filter2')
@api.model
def _selection_filter2(self):
res_filter = []
filter_list = self.env['ir.config_parameter'].search([('key', 'like', 'issue_filter_')])
for filter in filter_list:
res_filter.append((filter.key[13:], _(filter.value)))
return res_filter
<?xml version="1.0" encoding="utf-8"?>
<dtcloud>
<data noupdate="0">
<record model="ir.config_parameter" id="object_amos_selection_1">
<field name="key">issue_filter_one</field>
<field name="value">一级</field>
</record>
<record model="ir.config_parameter" id="object_amos_selection_2">
<field name="key">issue_filter_two</field>
<field name="value">二级</field>
</record>
<record model="ir.config_parameter" id="object_amos_selection_3">
<field name="key">issue_filter_three</field>
<field name="value">三级</field>
</record>
</data>
</dtcloud>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19