Relational types in OpenERP are:
- many2one
- one2many
- many2many
- related
many2one: associates an object to its parent object. Example Customer and Invoices. Many invoices belong to one customer.
Syntax:
fields.many2one(
'other.object.name',
'Field Name',
optional parameters)
Exampe:
partner_id': fields.many2one('res.partner', 'Partner', change_default=True, readonly=True, required=True, states={'draft':[('readonly',False)]}),
Optional parameters:
ondelete: when the resource this field points to is deleted.
Predefined value: "cascade", "set null", "restrict", "no action", "set default"
Default value: "set null"
required: True
readonly: True
select: True - (creates an index on the Foreign Key field)
one2many: associates the parent to its child object. Example one Invoice with many Lines(items).
Syntax:
fields.one2many(
'other.object.name',
'Field relation id',
'Fieldname',
optional parameter)
Example:
'invoice_line': fields.one2many('account.invoice.line', 'invoice_id', 'Invoice Lines', readonly=True, states={'draft':[('readonly',False)]}),
Optional parameters:
invisible: True/False
states: ?
readonly: True/False
many2many: associates two objects with many links. Example many tax entries with many invoice (line)entries.
Syntax:
fields.many2many('other.object.name',
'relation object',
'actual.object.id',
'other.object.id',
'Field Name')
Where:
other.object.name: the other object which belongs to the relation
relation object: the table that makes the link
actual.object.id and other.object.id: the fields' names used in the relation table
Example:
'invoice_line_tax_id': fields.many2many('account.tax', 'account_invoice_line_tax', 'invoice_line_id', 'tax_id', 'Taxes', domain=[('parent_id','=',False)]),
describes the tax associated with each line of the invoice
related: associates relation of a relation, example company,partner,invoice lines, you can refer directly from an invoice to a company.
Syntax:
'other_object_id': fields.related(
'chain_id1',
'chain_id2',
type="many2one",
relation="other.object.name",
string="Name",
store=False)
Where:
The first set of parameters are the chain of reference fields to follow, with the desired field at the end
type is the type of that desired field
relation is the table to look up that reference in
Example:
'company_id': fields.related('invoice_id','company_id',type='many2one',relation='res.company',string='Company', store=True, readonly=True),
0 Comment(s)