之前我们已经讲解了odoo ORM中的一些对字段常用的API操作方法,今天我们继续研究一下Odoo orm中字段的一些通用属性字段的使用,学会它们可以为自己创建数据映射并使用有更好的帮助。
实例化映射模型的时候时可以使用以下属性
fandx_name = fields.Char(string="姓名")
fandx_name = fields.Char(help="这是一个姓名")
fand_name = fields.Char(string="姓名", readonly=True)
fandx_name = fields.Char(string="姓名", readonly=True, required=True)
fandx_name = fields.Char(string="姓名", readonly=True, required=True, index=True)
default可以设置这个字段的默认值。
default的内容可以是固定的默认值。
default也可以是一个被调用的function,default的值会自动设置为function的返回值。
方式一:fandx_name = fields.Char(string="姓名", default="张三")
方式二:fandx_name = fields.Char(string="姓名", default=lambda self: self.env.user.display_name)
方式三:
def _defult_name(self):
return self.env.user.display_name
fandx_name = fields.Char(string="姓名", invisible=True, default=_defult_name)
这个可以根据state状态的的值动态改变字段在XML中的显示状态。
必须配合state状态字段使用。
model.py
state = fields.Selection([('create', '创建'), ('finish', '已完成')], string='状态', default='create')
fandx_test = fields.Char("测试字段", states={'create': [('required', True)], 'finish': [('readonly', True)]})
View.xml
<field name="state" />
<field name="fandx_test" />
注意:!!!用到这个方法必须要在xml视图中加载state字段,如果不加载则会报JS错误。
fandx_name = fields.Char(string="姓名", default="张三", groups='base.group_user')
fandx_name = fields.Char(string="姓名", company_dependent=True)
fandx_name = fields.Char(string="姓名", company_dependent=True, copy=False)
fandx_name = fields.Char(string="姓名", store=False)
这里的str内容是固定的选择,在搜索分组的时候计算字段的值会用到这个group_operator的内容。
count - 计算数量。
count_distinct - 数据不同的数量。
bool_and - 如果所有值都为true,则为true,否则为false。
bool_or - true if at least one value is true, otherwise false。
max - 最大值。
min - 最小值。
avg - 平均值。
sum - 求和。
fandx_nums = fields.Integer(string="a_test", group_operator='sum')
这里传进一个方法名称,在分组的时候会进行调用这个方法。
state = fields.Selection([('create', '创建'), ('finish', '已完成')], string='状态', default='create', group_expand="_expand_states")
def _expand_states(self, states, domain, order):
# 这里返回需要成组的字段,如果按state分组就会走到这个方法!
return [key for key, val in type(self).state.selection]
手机扫一扫
移动阅读更方便
你可能感兴趣的文章