Odoo 多 2 多 选择字段
Odoo Many 2 Many Selection field
我正在尝试在 Odoo9 中创建一个选择字段。我可以添加一个项目,但它不会仅保存创建它的用户的名称。
我的model.py长得像
from openerp import models, api, fields
class ComputerItems(models.Model):
_name = "notebook"
items_computer = fields.Char("Items")
ds_items = fields.Char("Items")
class ds_repair(models.Model):
_name = "ds.repair"
x_partner_id = fields.Many2one('res.partner', 'Client', required=True)
other = fields.Char("Other", size=128)
items = fields.Many2many('notebook',
'ds_items', string='Items')
我的model.xml
<record id="view_ds_repair_form" model="ir.ui.view">
<field name="name">ds.repair.form</field>
<field name="model">ds.repair</field>
<field name="arch" type="xml">
<form string="Repairs">
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<group colspan="4" col="6">
<h1><field name="x_partner_id" placeholder="Customer Name"/></h1>
<field name="create_date"/>
<h2>Priority<field name="priority"/></h2>
</group>
<group colspan="4" col="6">
<field name="computer_make"/>
<field name="password" colspan="2"/>
<field name="items"/>
</group>
</div>
字段'items'
<field name="items" widget="many2many_tags"/>
当你没有为你的模型创建任何树时,odoo 会为它创建一个 costum 树:
首先他会检查属性值 _rec_name
.rec_name 默认包含代表记录的字段名称 _rec_name = "name"
所以 odoo 会寻找一个名为name
如果存在,odoo 将创建一棵只有一个字段的树。但是就像你的情况一样,你的模型没有名为 name 的字段,odoo 将创建一个 create_uid
的树。为了告诉 odoo 从另一个字段创建树,您更改 _rec_name
的值
class ModelClass(models.Model):
_name ="model.name"
_rec_name = "field_name"
field_name = fields.....
当您的模型只有一个字段时,这很好,但当您的模型有多个字段时,您有两种选择
如果您的模型只需要一棵树用于各种用途,请为其创建一棵树,odoo 将始终调用它
如果您的模型可以针对不同的 many2many 或 one2many 字段使用多树,您可以这样做:
<field name="x2many_field_name" >
<tree>
<!-- your field here -->
</tree>
<form>
<!-- costum form here -->
</form>
</field>
如果您想使用 many2many_tags
小部件,您需要指定 _rec_name
_rec_name = "field_name"
<field name="x2many_field_name" widget="many2many_tags" />
我正在尝试在 Odoo9 中创建一个选择字段。我可以添加一个项目,但它不会仅保存创建它的用户的名称。
我的model.py长得像
from openerp import models, api, fields
class ComputerItems(models.Model):
_name = "notebook"
items_computer = fields.Char("Items")
ds_items = fields.Char("Items")
class ds_repair(models.Model):
_name = "ds.repair"
x_partner_id = fields.Many2one('res.partner', 'Client', required=True)
other = fields.Char("Other", size=128)
items = fields.Many2many('notebook',
'ds_items', string='Items')
我的model.xml
<record id="view_ds_repair_form" model="ir.ui.view">
<field name="name">ds.repair.form</field>
<field name="model">ds.repair</field>
<field name="arch" type="xml">
<form string="Repairs">
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<group colspan="4" col="6">
<h1><field name="x_partner_id" placeholder="Customer Name"/></h1>
<field name="create_date"/>
<h2>Priority<field name="priority"/></h2>
</group>
<group colspan="4" col="6">
<field name="computer_make"/>
<field name="password" colspan="2"/>
<field name="items"/>
</group>
</div>
字段'items'
<field name="items" widget="many2many_tags"/>
当你没有为你的模型创建任何树时,odoo 会为它创建一个 costum 树:
首先他会检查属性值 _rec_name
.rec_name 默认包含代表记录的字段名称 _rec_name = "name"
所以 odoo 会寻找一个名为name
如果存在,odoo 将创建一棵只有一个字段的树。但是就像你的情况一样,你的模型没有名为 name 的字段,odoo 将创建一个 create_uid
的树。为了告诉 odoo 从另一个字段创建树,您更改 _rec_name
class ModelClass(models.Model):
_name ="model.name"
_rec_name = "field_name"
field_name = fields.....
当您的模型只有一个字段时,这很好,但当您的模型有多个字段时,您有两种选择
如果您的模型只需要一棵树用于各种用途,请为其创建一棵树,odoo 将始终调用它
如果您的模型可以针对不同的 many2many 或 one2many 字段使用多树,您可以这样做:
<field name="x2many_field_name" >
<tree>
<!-- your field here -->
</tree>
<form>
<!-- costum form here -->
</form>
</field>
如果您想使用 many2many_tags
小部件,您需要指定 _rec_name
_rec_name = "field_name"
<field name="x2many_field_name" widget="many2many_tags" />