odoo-默认值-default
默认值
任何字段都可以设置默认值。在字段定义中,添加选项default=X,X可以是一个Python文字值value (boolean, integer, float, string),或者是一个承载记录集并返回值的方法:
name = fields.Char(default="Unknown")
user_id = fields.Many2one('res.users', default=lambda self: self.env.user)
对象self.env给出了请求参数和其他有用资源的访问:
- self.env.cr或者self._cr:数据库游标对象,用于查询数据库
- self.env.uid或者self._uid:当前数据库的ID
- self.env.user:当前用户的记录
- self.env.context或者self._context:上下文字典
- self.env.ref(xml_id):返回一个XML的id所对应的记录
- self.env[model_name]:返回给定模型的一个实例
练习
有效对象 – 默认值
- 把start_date默认值定义为今天(查看Date)。
- 在课务类中添加一个active字段,并设置课务默认为有效。
openacademy/models.py
_name = 'openacademy.session'
name = fields.Char(required=True)
start_date = fields.Date(default=fields.Date.today)
duration = fields.Float(digits=(6, 2), help="Duration in days")
seats = fields.Integer(string="Number of seats")
active = fields.Boolean(default=True)
instructor_id = fields.Many2one('res.partner', string="Instructor",
domain=['|', ('instructor', '=', True),
openacademy/views/openacademy.xml
<field name="course_id"/>
<field name="name"/>
<field name="instructor_id"/>
<field name="active"/>
</group>
<group string="Schedule">
<field name="start_date"/>
Odoo有内置的规则,使active字段为False的字段设置为不可见。