首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Odoo API(XMLRPC)设置一个相关字段,其中一个字段是2any,many2one和many2many字段?

Odoo是一款开源的企业资源规划(ERP)软件,它提供了丰富的API来与系统进行交互。使用Odoo API(XMLRPC)设置相关字段可以通过以下步骤完成:

  1. 连接到Odoo实例:首先,你需要使用XMLRPC客户端库连接到Odoo实例。你可以使用Python的xmlrpc.client库或其他适用的库来实现。具体的连接代码如下:
代码语言:txt
复制
import xmlrpc.client

url = 'http://your_odoo_instance_url'
db = 'your_database_name'
username = 'your_username'
password = 'your_password'

common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
  1. 获取模型对象:使用models.execute_kw方法获取要操作的模型对象。该方法接受以下参数:数据库名、用户ID、用户密码、模型名称、要执行的操作(例如:searchreadwritecreate等),以及其他相关参数。例如,要获取res.partner模型对象,可以使用以下代码:
代码语言:txt
复制
model_name = 'res.partner'
model = models.execute_kw(db, uid, password, model_name, 'search', [[]])
  1. 设置相关字段:一旦获取了模型对象,你可以使用models.execute_kw方法来设置相关字段的值。具体的操作取决于字段类型:
  • 对于2any字段(即外键关联字段),你可以使用目标模型的ID来设置字段的值。例如,要将res.partner模型的parent_id字段设置为ID为1的合作伙伴,可以使用以下代码:
代码语言:txt
复制
partner_id = 1
models.execute_kw(db, uid, password, model_name, 'write', [[partner_id], {'parent_id': partner_id}])
  • 对于many2one字段(即多对一关联字段),你可以使用目标模型的ID来设置字段的值。例如,要将res.partner模型的country_id字段设置为ID为1的国家,可以使用以下代码:
代码语言:txt
复制
country_id = 1
models.execute_kw(db, uid, password, model_name, 'write', [[partner_id], {'country_id': country_id}])
  • 对于many2many字段(即多对多关联字段),你可以使用目标模型的ID列表来设置字段的值。例如,要将res.partner模型的category_id字段设置为ID为1和2的分类,可以使用以下代码:
代码语言:txt
复制
category_ids = [1, 2]
models.execute_kw(db, uid, password, model_name, 'write', [[partner_id], {'category_id': [(6, 0, category_ids)]}])

在上述代码中,(6, 0, category_ids)表示将category_id字段的值设置为category_ids列表中的ID。

以上是使用Odoo API(XMLRPC)设置相关字段的基本步骤。根据具体的业务需求,你可以根据需要进行读取、写入、更新等操作。请注意,这只是一个简单的示例,实际应用中可能需要根据具体情况进行适当的修改。

关于Odoo的更多信息和详细的API文档,请参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

odoo ORM API学习总结兼orm学习教程

limit (int) – 读取时用的可选限制 comodel_name inverse_name 参数必选参数,除非相关或者扩展字段 class odoo.fields.Many2many[源代码...Many2many 或者 One2many 字段 related 可以用于引用另一个模型中的 One2many 或Many2many 字段,前提通过当前模型的一个Many2one关系来实现的。...访问一个关系字段(Many2one,One2many,Many2many),总是返回记录集,如果未设置字段的话,则返回空记录集。...这通常用于垃圾收集之类的不需要特定cron作业的任务 odoo.api.constrains(*args)[源代码] 装饰一个约束检查器 每个参数必须校验使用字段名称: @api.constrains...odoo.api.model(method)[源代码] 修饰一个record-style的方法,其中self一个空记录集,但其内容不相关,只有模型相关,可以理解为不会创建对应数据库记录的模型对象。

13.5K10

odoo 开发入门教程系列-模型之间的关系(Relations Between Models)

many2one指向另一个对象的简单链接。...该练习对前几章很好的扼要重述:你需要创建一个 model,设置 model,添加 动作和菜单,并且创建视图....many2many一种双向多重关系:一侧的任何记录都可以与另一侧的任何数量的记录相关。...property_id Many2one (estate.property) required 使用price,partner_id,status字段创建列表表单视图 ,不必创建动作和菜单...某些模型只能通过另一个模型访问。在我们的练习中就是这样的:报价总是通过房产获得的。 其次,尽管property_id字段必需的,但我们没有将其包含在视图中。odoo如何知道我们的报价与哪个房产相关

4.5K40
  • odoo 开发入门教程系列-模型基本字段

    模型基本字段 在上一章的末尾,我们创建一个odoo模块。然而,此时它仍然一个空壳,不允许我们存储任何数据。...) 参考: 本主题关联文档可参考 Models API....ORM 层odoo一个关键组件。该层避免了手动写入大部分SQL并提供可扩展性安全服务. 业务对象被定义为继承于 Model的Python类。可以通过在定义中设置属性来配置model。...Fields) 参考: 该主题相关文档可参考 Fields API 字段用于定义model可以存储啥及在哪里存储。...自动创建的字段(Automatic Fields) 参考: 该话题相关文档可参考 Automatic fields. odoo会在所有model(当然,也可以配置禁止自动创建某些字段)中创建少数字段

    2.4K30

    odoo 开发入门教程系列-模块交互

    Odoo提供了一个开发票模块,因此直接从我们的房地产模块创建发票很简单的,也就是说,一旦某个房产设置为“已售出”,就会在Invoicing应用程序中创建发票 一个具体示例: 记账凭证(Account...链接模块(Link Module) 此类使用案例的常见方法创建“链接”模块。在我们的案例中,该模块依赖estate account,包括房产的发票创建逻辑。...不幸的,没有一种简单的方法可以知道如何Odoo中创建任何给定的对象。大多数时候,有必要查看其模型,以找到所需的字段并提供适当的值。 学习的一个好方法看看其他模块如何完成你想做的事情的。...Invoice对应 提示: 使用 self.env[model_name].create(values)创建一个对象, 其中values 为一个字典。...One2manyMany2many使用通用ORM方法中描述的特殊“commands”。这种格式一个按顺序执行的三元组列表,其中每个三元组都是要对结果集执行的命令。

    1.7K10

    odoo 开发入门教程系列-约束(Constraints)

    我们现在可以将按钮链接到业务代码,但如何防止用户输入错误的数据?例如,在我们的房地产模块中,没有什么可以阻止用户设置负预期价格。...SQL 参考:与此主题相关的文档可以查看 Models PostgreSQL文档 我们通过模型属性_sql_constraints来定义SQL约束,该属性被赋值为一个包含三元组(name, sql_definition..., message)的列表,其中name为一个合法的SQL约束名称, sql_definition 为表约束表达式,message为错误消息。...SQL约束确保数据一致性的有效方法。然而,可能需要进行更复杂的检查,这需要Python代码。在这种情况下,我们需要一个Python约束。...警告 当浮点数打交道时,总是使用odoo.tools.float_utils导入的float_compare() float_is_zero()方法 确保每次售价或者预期价格改变时,自动触发约束

    1.5K20

    Odoo 基础教程系列」第三篇——从 Todo 应用开始(2)

    Selection 类型的字段 priority,并且指定了三个可供选择的程度类型,一般情况下,如果一个字段只有固定的几种可选值,通常都会选择使用 Selection 字段,它接受一个元组列表作为参数...,其中元组的组成为 (value, string),左边的数据库中存储的值,右边的一个用于界面显示的描述。...这个需求跟时间有关,并且时间流动(一直在变化)的,所以我们应该要有一个方法在用户每次打开待办事项之前,把这个结果计算好,并且反馈给用户,还好 Odoo 的 ORM 已经为我们实现了相关的机制——计算字段...我们来看一下对应的方法 _compute_is_expired 头顶上的 @api.depends 这个装饰器,它接受了一个参数 deadline,表示的 is_expired 这个字段的计算会用到...PS: 这里我们对 deadline 进行了判断,是因为如果没有设置截止时间,又或者在新建代办事项时,这里的 deadline 会是一个布尔值,不能时间字符串进行比较的。

    1.4K10

    odoo 开发入门教程系列-一些用户界面

    正如前面所述, action可以看做菜单model之间的连接。 注意:这里的id的值action的值不能设置成一样,否则会报错。...Odoo有许多微调方式,但通常第一步确保: 某些字段有默认值 某些字段只读 当记录重复时,某些字段不能被拷贝 在我们的房产业务案例中,我们希望:: 售价只读(往后将自动填充) 当记录重复时,可用日期售价不能被拷贝...字段定义中,添加 default=X, 其中的X 可以是Python文本值(boolean, integer, float, string) ,也可以是一个以model对象自身为入参并返回一个值的函数:...保留字段 参考: 主题相关文档可参考 保留字段名称. odoo为预定义行为保留了一些字段名称。...当需要相关行为时,需要在模型中定义这些保留字段。 练习 -- 添加active字段 添加一个 active 字段到estate.property 模型。

    3K30

    odoo 权限管理学习总结

    res_partner表中,那么在odoo如何区分用户类型以及如何做权限控制的呢?...-> Users & Companies -> Groups),并为用户分配不同的用户组,及设置相关权限(菜单权限,视图权限,访问权限,记录规则) 此外,为了更方便的管理用户组,odoo还支持对用户组...用户组用户组分类:一个用户组分类可以拥有多个用户组,一个用户组仅归属一个用户组分类,属于1对多的关系。...每个访问权限关联一个模型,一个group(针对全局访问,没有组) 一系列权限:create, read, write unlink(等同于delete)。...domain一个可以使用以下变量的python表达式: time Python的 time 模块 user 以单例记录集(singleton recordset)表示的当前用户

    10.2K20

    RNN循环神经网络之通俗理解!

    如果我们有一个RNN,那么它的基本玩法有三种one2many, many2one, many2many。...在这里onemany描述的序列的长度,如many2one,就是指原序列长度不为1,目标序列长度为1,以此类推。 ?...其中one2many的话,根据一个单一的输入,输出一系列的序列,具体到应用的话,可以是给一个词、一幅(整张输入)图像等,用RNN来生成一段文字。...此外,many2one的任务可以用many2many的方式实现,只要最后加上一个many 到 one的转换方式将多个输出(比如求平均、比如加权(Attention))合并成一个。...LSTMGRU确实缓解了RNN的长期依赖的问题,但是现在我们注意到另外一个问题,并不是所有的序列数据都只是单向相关的,可能当前时间点数据不仅之前时间点的相关,也之后时间点的相关

    2.6K21

    Gorm 关联关系介绍与基本使用

    默认情况下,外键的名字,使用拥有者的类型名称加上表的主键的字段名字 例如,定义一个User实体属于Company实体,那么外键的名字一般使用CompanyID。...如果你想要使用一个字段来保存该关系,你同样可以使用标签 foreignKey 来更改它,例如: type User struct { gorm.Model CreditCard CreditCard...默认的外键名拥有者的类型名加上其主键字段名 例如,要定义一个属于 User 的模型,则其外键应该是 UserID。...当然,您不需要使用全部的标签,你可以仅使用其中一个重写部分的外键、引用。...的 CURD 查看 关联模式 获取 many2many 相关的用法 4.7 自3定义连接表 连接表 可以是一个全功能的模型,支持 Soft Delete、钩子、更多的字段,就跟其它模型一样。

    47610

    odoo context上下文用法总结

    _context {'lang': 'en_US', 'tz': 'Europe/Brussels'} >>> recordSet.env.context # 注意,上下文记录集绑定的,上述的self..._context is {'key1': True, 'key2': True} 需要注意的,上下文记录集绑定的,修改后的上下文并不会在其它记录集中共享 应用场景示例 用于action,为关联视图添加默认搜索...、过滤条件 视图定义 为设置action打开的tree列表视图,添加默认搜索,搜索条件为 state字段值等于True 、元素的name属性值 content 如果fieldName为搜索字段的name属性值,那么...> 说明:context属性值中的字典的键值如果为模型中定义的字段名称,则该字段名称必须以元素的形式,出现在模型对应的视图(即不能内联视图,比如内联Tree列表)中,否则会出现类似错误提示

    2.1K20

    odoo 开发入门教程系列-基本视图

    在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图在带有操作和菜单的XML文件中定义的。...除了在使用方面的不同,他们的定义方式一样的。 搜索视图根元素为。...domain 引用: 本主题相关文档可参考 Search domains. 在odoo中,domain对记录上的条件进行编码:domain用于选择模型记录子集的条件列表。...每个条件都是一个包含字段名、运算符值的三元组。如果指定字段满足作用于值的运算符的条件,则记录满足条件。...=','en_US'), ('country_id.code','in', ['be', 'de'])] 波兰表示法简介 Odoo使用了波兰表示法,简单来说,波兰表示法一种操作符置于操作数前,并且不需要括号仍然能无歧义地解析表达的方法

    3.3K40

    odoo 开发入门教程系列-QWeb简史

    Odoo自带内置引擎:QWeb模板。QWebOdoo使用的主要模板引擎。它是一个XML模板引擎,主要用于生成HTML片段页面。 你可能已经在Odoo见过 看板,其中的记录以卡片状结构显示。...看板视图标准的Odoo视图(如表单列表视图),但其结构更灵活。事实上,每张卡片的结构表单元素(包括基本HTML)QWeb的混合。...看板视图的定义与列表视图表单视图的定义相似,只是它们的根元素kanban。...每个字段都有两个属性 value raw_value。前者根据当前用户参数格式化的,后者则是直接通过read()读取的。...练习--添加默认分组 使用合适的属性对房产分组,默认按类型分组。你必须阻止拖拽删除。

    2.1K20

    Python XML-RPC 自动(离线)发布Zblog博客文章

    站佬哥们要的东西,自动OR离线发布博客文章,开源程序为Zblog,其实Wordpress一样适用,毕竟都是博客类程序,都是有这样的api接口可以使用!...关于XML-RPC XML-RPC一个远程过程调用(远端程序呼叫)(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。...如果不需要使用到该功能,建议不要开启使用! Python XML-RPC 自动(离线)发布源码 本渣渣这里使用Python3,使用自带的xmlrpc库即可,无需在另外安装第三方库。..., #摘要 }, True) print(blog) 发布成功,没有报错的话,返回一个值:True!...关于Zblog博客标签相关字段 关于Zblog博客标签相关字段可以参考一下 XML-RPC接口 php源码!

    85820

    Odoo 菜单定义修改学习总结

    odoo菜单定义修改学习总结 环境 odoo-14.0.post20221212.tar 定义菜单 方式1: 说明: id 菜单外部ID name 如果不指定name,则: 如果为菜单设置了action,则获取action record定义中name字段的值作为菜单name属性的值 如果未设置菜单action...其中图标路径,一般相对于模块根目录的相对路径 sequence 设置菜单展示顺序。该属性值越大,越靠右、靠下方展示。也就是说,菜单从左往右,从上到下,对应sequence属性值从小到大。...id属性值的组合,形如:moduleName.source_menu_id(参见下述示例),如果新的菜单原有菜单在同一个模块,可以省略moduleName.。...隐藏原有菜单的子菜单(如果需要的话) 定义一个,将其id设置为要隐藏的子菜单所在模块名称及id属性值的组合,形如:moduleName.source_menu_id,如果新的菜单原有菜单在同一个模块

    1.4K10
    领券