Odoo封装的字段对象主要有:
- Boolean
- Integer
- Float
- Monetary
- Char
- Text
- Html
- Date
- Datetime
- Binary
- Selection
- Reference
- Many2one
- One2many
- Many2many
Boolean
Boolean字段的type值为boolean;column_type值为('bool', 'bool')
Boolean对应pg的字段类型为boolean
例:
active = fields.Boolean(default=True, help=u"设置字段是否有效")
Integer
Integer字段的type值为integer;column_type值为('int4', 'int4')
_slots = { 'group_operator': 'sum', }
Integer对应pg的字段类型为4个字节的integer,并且能执行sum的聚合操作
例:
sequence = fields.Integer(string=u'序号', default=1)
Float
Float字段type值为float;column_type值为('numeric', 'numeric')或('float8', 'double precision')
_slots = {'_digits': None, 'group_operator': 'sum',}
Float对应pg的字段类型为8个字节的double或变长的numeric,并且能执行sum聚合操作
例:
product_qty = fields.Float(string=u'产品数量', digits=dp.get_precision('Product Unit of Measure'), required=True, index=True)
Monetary
Monetary字段的type值为monetary;column_type值为('numeric', 'numeric')
_slots = {'currency_field': None, 'group_operator': 'sum', }
Monetary 对应pg的字段类型为变长的numeric,并且能执行sum聚合操作
例:
amount = fields.Monetary(string=u'金额', currency_field='company_currency_id')
Char
Char字段的type值为char;column_type值为('varchar', 'VARCHAR')
Char对应pg的字段类型为变长的VARCHAR
例:
name = fields.Char(string=u'名称', index=True, required=True)
Text
Text字段的type值为text;column_type值为('text', 'text')
Text对应pg的字段类型为长文本类型的text
例:
comment = fields.Text(string=u'评论')
Html
Html字段的type值为text;column_type值为('text', 'text')
Html对应pg的字段类型为长文本类型的text; Html是特殊的Text该字段能保存html代码
例:
comment = fields.Html(string=u'评论')
Date
Date字段的type值为date;column_type值为('date', 'date')
Date对应pg的字段类型为日期类型的date
例:
start_date = fields.Date(string=u'开始日期', default=fields.Date.today)
Datetime
Datetime字段的type值为datetime;column_type值为('timestamp', 'timestamp')
Datetime对应pg的字段类型为无时区的日期时间类型的timestamp
例:
start_time = fields.Date(string=u'开始时间', default=fields.Date.now)
Binary
Binary字段的type值为binary;column_type值为('bytea', 'bytea')
Binary对应pg的字段类型为二进制类型bytea
Selection
Selection字段的type值为selection;column_type值为('int4', 'integer')或('varchar', 'VARCHAR')
Selection对应pg的字段类型为4个字节的interger或者是不定长的varchar
例:
state = fields.Selection(selection=[('draft',u'草稿'), ('done', u'完成')], default='draft')
Reference
Reference字段的type值为reference;column_type值为('varchar', 'VARCHAR')
Reference对应pg的字段类型为不定长的varchar
Many2one
Many2one字段的type值为many2one;column_type值为('int4', 'int4')
_slots = {'ondelete': 'set null', 'auto_join': False, 'delegate': False, }
Many2one是一个多对一的外表关联字段,对应pg的字段类型是4个字节的integer
例:
partner_id = fields.Many2one(comodel_name='res.partner', string=u'业务伙伴')
One2many
One2many字段的type值为one2many;
_slots = {'inverse_name': None, 'auto_join': False, 'limit': None,'copy': False,}
One2many是一个一对多的关联字段,与Manyone形成呼应
例:
stock_quant_ids = fields.One2many(comodel_name='stock.quant', inverse_name='product_id')
Many2many
Many2many字段的type值为many2many;
_slots = {'relation': None, 'column1': None, 'column2': None, 'auto_join': False, 'limit': None,}
many2many是一个多对多的关联字段
例:
sale_line_ids=fields.Many2many(comodel_name='sale.order.line', relation='sale_order_line_invoice_rel', column1='invoice_line_id', column2='order_line_id', string='Sale Order Lines', readonly=True)