写一个odoo Many2one字段给Many2many字段传递值的方法
时间: 2024-01-27 22:05:13 浏览: 163
好的,下面是一个完整的示例代码,演示了如何通过Many2one字段给Many2many字段传递值。
在这个示例中,我们有两个模型:`ModelA`和`ModelB`,它们之间是Many2one关系。`ModelB`中有一个Many2many字段`value_ids`,用于存储传递的值。
1. 定义模型`ModelA`和`ModelB`
```python
class ModelA(models.Model):
_name = 'model.a'
name = fields.Char(string='Name')
model_b_id = fields.Many2one(comodel_name='model.b', string='Model B')
class ModelB(models.Model):
_name = 'model.b'
name = fields.Char(string='Name')
value_ids = fields.Many2many(comodel_name='model.c', column1='model_b_id', column2='model_c_id', string='Values')
```
在上述代码中,`ModelA`和`ModelB`之间是Many2one关系,`ModelB`中有一个`value_ids` Many2many字段,用于存储传递的值。
2. 在模板中添加Many2many字段的下拉菜单
```xml
<field name="model_b_id"/>
<field name="value_ids" widget="many2many_tags"/>
<button name="transfer_values" string="Transfer Values"/>
```
在上述代码中,我们在模板中添加了一个Many2many字段的下拉菜单,用于选择传递给`ModelB`的值。同时,我们添加了一个按钮,用于触发传递操作。
3. 在模型`ModelA`中添加传递值的方法
```python
@api.multi
def transfer_values(self):
for record in self:
values = record.value_ids.ids
record.model_b_id.write({'value_ids': [(6, 0, values)]})
```
在上述代码中,我们定义了一个`transfer_values`方法,用于传递选择的值。在这个方法中,我们通过API获取Many2many字段`value_ids`的值,并将其传递给`ModelB`的对应记录中。
通过以上三个步骤,我们就可以实现通过Many2one字段给Many2many字段传递值的操作了。
阅读全文