odoo 一日一技 from odoo import Command 处理One2many和Many2many字段

基础介绍​​​

在Odoo(odoo14版本以上)中,Command类是用于处理One2many和Many2many字段。就是和之前命令元组相同,但是我觉得使用包装好的类能增加代码的可读性和简便性。

Command类中的方法和以往常量对比关系

CREATE = 0:创建新记录。
UPDATE = 1:更新现有记录。
DELETE = 2:删除记录。
UNLINK = 3:取消链接记录。
LINK = 4:链接记录。
CLEAR = 5:清除所有记录。
SET = 6:设置字段值为给定的记录列表。

代码示例

# 创建一个新的记录
values = {'name': 'New Record'}
create_command = Command.create(values)
print(create_command)  # 输出: (0, 0, {'name': 'New Record'})

# 更新一个现有的记录
record_id = 1
values = {'name': 'Updated Record'}
update_command = Command.update(record_id, values)
print(update_command)  # 输出: (1, 1, {'name': 'Updated Record'})

# 删除一个记录
record_id = 1
delete_command = Command.delete(record_id)
print(delete_command)  # 输出: (2, 1, 0)

# 取消链接一个记录
record_id = 1
unlink_command = Command.unlink(record_id)
print(unlink_command)  # 输出: (3, 1, 0)

# 链接一个记录
record_id = 1
link_command = Command.link(record_id)
print(link_command)  # 输出: (4, 1, 0)

# 清除所有记录
clear_command = Command.clear()
print(clear_command)  # 输出: (5, 0, 0)

# 设置一组新的记录
record_ids = [1, 2, 3]
set_command = Command.set(record_ids)
print(set_command)  # 输出: (6, 0, [1, 2, 3])

# 最后将command赋值给One2many和Many2many字段
## 创建示例 
self.api_params_ids = [
            Command.create({'name': 'test', 'path': 'test'}),
            Command.create({'name': 'test2', 'path': 'test2'}),
        ]

深入源码

Command源码地址

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Odoo中,可以通过Many2one字段Many2many字段传递值。这可以通过使用Odoo的特殊语法和API来实现。 具体方法如下: 1. 在Many2one字段对应的模型中,添加一个Many2many字段,用于存储传递的值。例如,我们在模型A中添加一个Many2many字段,用于存储传递给模型B的值。 ```python class ModelA(models.Model): _name = 'model.a' name = fields.Char(string='Name') value_ids = fields.Many2many(comodel_name='model.b', string='Values') ``` 2. 在Many2one字段对应的模板中,添加一个Many2many字段的下拉菜单,用于选择传递的值。这可以通过使用Odoo的特殊语法和API来实现。例如,我们在模板中添加一个下拉菜单,用于选择传递给模型B的值。 ```xml <field name="value_ids" widget="many2many_tags"/> ``` 3. 在Many2one字段对应的模型中,添加一个按钮,用于触发传递操作。按钮的onClick方法中,通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录中。例如,我们在模型A中添加一个按钮,用于触发传递操作。 ```python @api.multi def transfer_values(self): for record in self: values = record.value_ids.ids record.other_model_id.write({'many2many_field': [(6, 0, values)]}) ``` 在上述代码中,我们通过API获取Many2many字段的值,并将其传递给Many2one字段对应的记录中。 通过上述方法,我们可以实现Many2one字段Many2many字段传递值的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值