常用属性
string
定义:字段的标签,用于在用户界面上显示字段的名称。
示例:
name = fields.Char(string='Name')
注意:属性对于用户友好性至关重要,因为它确定了用户在界面上看到的字段标签。
help
定义:字段的帮助文本,用于提供有关字段用途或输入格式的描述。
示例:
description = fields.Text(string='Description', help='Enter a brief description of the item')
注意:属性对于指导用户如何填写字段是非常有用的。
required
定义:指示字段是否是只读的,即用户不能在表单中编辑该字段的值。
示例:
name = fields.Char(string='Name', required=True)
注意:将 required 设置为 True 可以确保在保存记录时不会留空必填字段。
readonly
定义:指示字段是否是只读的,即用户不能在表单中编辑该字段的值。
示例:
date = fields.Date(string='Date', readonly=True)
注意:将 readonly 设置为 True 可以防止用户修改字段的值,通常在字段根据其他条件自动生成值时使用。
compute
定义:指定一个计算方法来动态计算字段的值。
示例:
total_price = fields.Float(string='Total Price', compute='_compute_total_price')
@api.depends('unit_price', 'quantity')
def _compute_total_price(self):
for record in self:
record.total_price = record.unit_price * record.quantity
注意:使用 compute 属性可以根据其他字段的值动态计算字段的值。在 @api.depends 装饰器中指定依赖字段。
inverse
定义:指定一个反向方法来处理字段的值更改。
示例:
def _inverse_total_price(self):
for record in self:
record.unit_price = record.total_price / record.quantity
total_price = fields.Float(string='Total Price', compute='_compute_total_price', inverse='_inverse_total_price')
注意:使用 inverse 属性可以在字段的值更改时更新其他相关字段的值。
定义:指定一个相关字段,用于获取其他模型中的值。
示例:
partner_name = fields.Char(string='Partner Name', related='partner_id.name')
default
定义:指定字段的默认值。
示例:
is_active = fields.Boolean(string='Is Active', default=True)
注意:使用 default 属性可以在创建新记录时设置字段的默认值。
index
定义:指示字段是否应该被索引以提高数据库检索效率。
示例:
name = fields.Char(string='Name', index=True)
注意:将 index 设置为 True 可以加快对字段值的搜索操作。
copy
定义:指定字段是否应该在复制记录时复制其值。
示例:
name = fields.Char(string='Name', copy=True)
注意:默认情况下,字段的 copy 属性为 True,这意味着在复制记录时,字段的值也会被复制到新记录中。
translate
定义:指示字段的值是否应该被翻译成其他语言。
示例:
name = fields.Char(string='Name', translate=True)
注意:将 translate 属性设置为 True 可以使字段的值能够被翻译成其他语言。
size
定义:指定字段的最大长度。
示例:
name = fields.Char(string='Name', size=50)
注意:size 属性通常用于限制字符串字段的最大长度。
digits
定义:指定字段的精度和小数位数。
示例:
price = fields.Float(string='Price', digits=(10, 2))
注意:digits 属性通常用于限制浮点数字段的小数位数。
domain
定义:指定字段的域(范围),即允许的值。
示例:
partner_id = fields.Many2one('res.partner', string='Partner', domain="[('customer', '=', True)]")
注意:domain 属性通常用于在界面上限制可选值的范围。
selection
定义:指定一个选择列表,用户可以从中选择一个值。
示例:
status = fields.Selection([('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done')], string='Status')
注意:selection 属性用于定义一个包含选项的列表,每个选项是一个元组,包含两个值(数据库中的值和显示的标签)。
comodel_name
定义:指定与当前模型关联的目标模型的名称。
示例:
order_lines = fields.One2many(comodel_name='sale.order.line', inverse_name='order_id', string='Order Lines')
注意:comodel_name 属性用于指定与当前模型关联的目标模型。
inverse_name
定义:指定在目标模型中反向引用当前模型的字段名称。
示例:
order_lines = fields.One2many(comodel_name='sale.order.line', inverse_name='order_id', string='Order Lines')
注意:inverse_name 属性用于指定在目标模型中反向引用当前模型的字段名称。
relation
定义:指定多对多关系中关联表的名称。
示例:
categories = fields.Many2many(comodel_name='product.category', relation='product_category_rel', column1='product_id', column2='category_id', string='Categories')
注意:relation 属性通常不需要手动设置,因为它通常会自动生成,但在某些情况下,你可能需要显式地指定它。
column1 和 column2
定义:指定多对多关系中关联表的两个列的名称。
示例:
categories = fields.Many2many(comodel_name='product.category', relation='product_category_rel', column1='product_id', column2='category_id', string='Categories')
注意:如果你需要自定义多对多关系的关联表名称和列名称,可以使用 column1 和 column2 属性来指定。
ondelete
定义:指定关联记录被删除时的行为。
示例:
user_id = fields.Many2one(comodel_name='res.users', string='User', ondelete='cascade')
注意:ondelete 属性用于定义关联记录被删除时的行为,常见的选项包括 cascade、set null、restrict 等。
context
定义:指定与关联字段相关的上下文,默认情况下,这个上下文将传递给与字段关联的视图。
示例:
partner_id = fields.Many2one(comodel_name='res.partner', string='Partner', context={'default_customer': True})
注意:context 属性用于指定与关联字段相关的上下文,这可以影响与字段关联的视图中的行为。