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

我想根据选择字段填充Many2one字段

根据选择字段填充Many2one字段是指根据一个已选择的字段值来自动填充Many2one字段的值。这在很多应用场景中非常有用,可以提高用户的操作便捷性和数据的一致性。

在实现这个功能时,可以通过以下步骤来实现:

  1. 定义两个相关的模型,一个模型有Many2one字段,另一个模型有待填充的字段。
  2. 在待填充的字段所在的模型中,定义一个函数来处理填充逻辑。该函数会接收选择字段的值作为参数,并返回对应的Many2one字段的值。
  3. 在待填充的字段所在的模型中,使用@api.onchange装饰器来监听选择字段的变化,并调用填充函数来更新Many2one字段的值。
  4. 在视图中使用字段描述来设置选择字段和Many2one字段的关联关系。

以下是一个示例,以说明如何实现根据选择字段填充Many2one字段:

代码语言:txt
复制
from odoo import models, fields, api

class Model1(models.Model):
    _name = 'model1'
    
    name = fields.Char(string="Name")
    related_field = fields.Many2one('model2', string="Related Field")
    

class Model2(models.Model):
    _name = 'model2'
    
    name = fields.Char(string="Name")
    select_field = fields.Selection([
        ('option1', 'Option 1'),
        ('option2', 'Option 2'),
        ('option3', 'Option 3')
    ], string="Select Field")
    
    @api.onchange('select_field')
    def _onchange_select_field(self):
        if self.select_field == 'option1':
            self.env['model1'].browse(self._origin._context.get('active_id')).related_field = self.env['model2'].search([('name', '=', 'Option 1')], limit=1).id
        elif self.select_field == 'option2':
            self.env['model1'].browse(self._origin._context.get('active_id')).related_field = self.env['model2'].search([('name', '=', 'Option 2')], limit=1).id
        elif self.select_field == 'option3':
            self.env['model1'].browse(self._origin._context.get('active_id')).related_field = self.env['model2'].search([('name', '=', 'Option 3')], limit=1).id

在上述示例中,我们定义了两个模型:Model1Model2Model1包含一个Many2one字段related_field,用于关联Model2Model2包含一个选择字段select_field,用于选择相应的选项。

Model2中,我们定义了_onchange_select_field函数,并使用@api.onchange装饰器来监听select_field字段的变化。根据选择的值,我们通过搜索Model2中对应名称的记录,并将其ID赋值给Model1中的related_field字段。

需要注意的是,上述示例仅为演示目的,实际应用中可能需要根据具体情况进行修改和扩展。

对于腾讯云的相关产品和介绍链接,由于要求不提及具体品牌商,建议在腾讯云官方网站或开发者文档中搜索相关关键词,可以找到适用于云计算的产品和服务。

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

相关·内容

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

    有两大类领域字段:‘简单’字段--直接存储在模型表中的原子值,形如Boolean, Float, Char, Text, Date 和Selection, ‘关系型’ 字段--连接相同或者不同模型的记录...Selection(选择列表)定义为元组列表,查看示例 修改odoo14/custom/estate/models/estate_property.py文件 #!...有些属性是所有字段都拥有的,最常见的几个属性如下: string (str, default: 字段名称) UI上显示为字段的label (用户可见)....(Automatic Fields) 参考: 该话题相关文档可参考 Automatic fields. odoo会在所有model(当然,也可以配置禁止自动创建某些字段)中创建少数字段。...(Many2one) 记录创建人 write_date (Datetime) 记录最后修改时间 write_uid (Many2one) 记录最后修改人

    2.3K30

    手把手教你Excel数据处理!

    数据处理指根据数据分析目的,对收集到的数据进行处理、加工,使数据具备准确性、一致性和有效性,形成适合用于后续分析的数据格式。...这个操作是第一次接触,许是孤陋寡闻了,但是强烈推荐!以后批量填充就可以直接用这种方法,特别是在数据量非常大的时候! ? 3....当然,举得例子过于简单,直接copy过来也百分百匹配,此处举例只为说明此函数用于字段匹配的应用。 ? 三、数据拆分 有数据合并就不免存在数据拆分,数据拆分也叫数据抽取。...字段拆分 如果对某一字段进行拆分操作,首先可以选择菜单栏--数据--分列,利用分列功能按照想要的形式进行划分,下图附两张操作过程图,由于是自主分列,所以选择“固定宽度”,手动进行列的划分,得到想要的数据...二维表转一维表 有如下左边一张二维表,转为右边一维表。 ?

    3.6K20

    mybatisplus相关特性使用

    sql,可以测试下; 根据主键进行三个字段的更新 只根据一个字段的更新 4.自动填充 创建时间、修改时间!...2.实体类字段属性上需要增加注解 // 字段属性设置 ----TableField表中属性所用的注解--区别于id专用注解 //设置其为自动填充填充策略为插入时自动填充内容 @TableField(...,并且对各个字段设置自己的填充策略。...public class MyMetaObjectHandler implements MetaObjectHandler { // 插入时的填充策略,根据字段名填空,如果字段名相匹配则进行填充...,这次就也写在里面了,其实这里可以上上面的配置里再加一个乐观锁拦截器到mp拦截器里,这里为了区分,又定义了一个bean #2.在实体类的字段上加上@Version注解 @Version private

    61840

    MybatisPlus自动填充功能

    文章目录 1、实体类@TableField注解添加fill属性 2、自定义实现类 MyMetaObjectHandler 3、测试公共字段填充 插入 4、测试公共字段填充 修改 1、实体类@TableField...注解添加fill属性 下面设置的是在插入和更新时自动填充 @TableField(fill = FieldFill.INSERT_UPDATE) FieldFill是个枚举类,可以设置的值如下所示:..., /** * 更新填充字段 */ UPDATE, /** * 插入和更新填充字段 */ INSERT_UPDATE } User.java...注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段 填充处理器MyMetaObjectHandler在 Spring Boot 中需要声明@Component或@Bean...注入 要想根据注解FieldFill.xxx和字段名以及字段类型来区分必须使用父类的strictInsertFill或者strictUpdateFill方法 不需要根据任何来区分可以使用父类的fillStrategy

    1.4K20

    Mybatis-Plus时间自动填充

    优秀的Mybatis-plus又来了,这次将体验创建时间,更新时间的自动填充功能, 记得在阿里巴巴开发手册中提到一个规范,id,create_time,update_time为必备字段。...添加一个测试表,几个简单的字段,主要重点在于datetime类型的新的字段 create_time、update_time 阅读这篇博客时不需要你手动测试案例,因为这东西官方已经有文档介绍,只是将过程展示一遍...注意事项: 字段必须声明TableField注解,属性fill选择对应策略,该声明告知Mybatis-Plus需要预留注入SQL字段 填充处理器MyMetaObjectHandler在 SpringBoot...中需要声明@Component或@Bean注入 要想根据注解FieldFill.xxx和字段名以及字段类型来区分必须使用父类的strictInsertFill或者strictUpdateFill方法...不需要根据任何来区分可以使用父类的fillStrategy方法 下面进行测试,由于Test命名冲突了,这点也怪我,没考虑好,但是问题不大,我们照常测试。

    1.2K10

    工作十几年,看到这样的代码,内心五味杂陈......

    挨个添加补充字段,工程量很多,出错概率极高 后续扩展容易 1.5 最终落地 在 mybatis 拦截器中, 通过改写 SQL。新增时填充环境字段值,查询时添加环境字段条件。真正实现改一处即可。...在开始做之前,他也问我该怎么做;简单说了一些想法,比如可以跳过环境字段检查,不拼接条件;或者拼接所有条件,这样都能查询;亦或者看一下能不能注解来标志特定方法,你想一如何实现.........他填充的环境字段取出来为 null,看来很久没找到原因,让帮他看看。...填充颜色部分为小鲜肉的改造逻辑。 大概逻辑就是:将 env 字段填充所有环境。条件过滤的忽略的目的。...拿起手机看到快12点的那一刻,还是选择先回家了...... 四、总结思考 4.1 隔离总结 这是一个很好参考案例:在应用中既做了数据隔离,也做了数据共享。

    21110

    在线问题反馈模块实战(五):实现对通用字段内容自动填充功能

    一、前言        接下来的这几期,bug菌跟大家分享一下自己昨天刚接到一个临时的需求,热乎着呢,分享一下自己是如何面对临时需求并制定整个开发周期,其中包括从梳理业务到创建业务表再到实现业务逻辑形成闭环再到与前端对接...,要带着大家避免重复造轮子,采用了mp(mybatis-plus)所提供的自动填充策略。...没有这一步,自动填充功能肯定是不行的,如下就给大家讲解一下,如何实现填充器?...这分别代表你的insert、update方法触发执行时所会进行的字段填充策略。...然后对于继承了BaseEntity又无法获取用户信息的,目前也是没有办法避免它也会执行这个字段注入,发现个最笨的方法就是徒手写sql,在持久层定义mapper方法;虽然啊这方案比较low,但是能有效解决目前问题的

    24720

    如何自动填充SQL语句中的公共字段

    如何自动填充SQL语句中的公共字段 1. 前言 我们在设计数据库的时候一定会带上新增、更新的时间、操作者等审计信息。...那么我们有哪些选择? 2.1 开发Mybatis审计插件 如果你使用了原生的 Mybatis 可以编写一个审计插件来实现这些功能。在之前讲解过 Mybatis 插件的教程,并不是非常难的事。...如果你想拿来就用,其实 GitHub 上提供了很多可供选择的 Mybatis 审计组件,本来打算手写一个,但是确实人家写的好。...你可以通过关键词 Mybatis Audit 来搜索到它们选择一款最适合你的。 2.2 Mybatis Plus 自动填充 如果你使用了 Mybatis Plus ,可以借助于其自动填充功能来实现。...,当然你可以根据需要添加更多你需要填充字段

    2.2K30

    如何进行数据质量分析

    中,讲述数据质量管理的四个阶段。今天详细说说其中的第三阶段--如何进行数据质量分析,希望对大家有所帮助。...在该系列的上一篇文章中,与大家讲述了可以用表和字段作为基准,进行分析的4个维度以及采用的相应的方法,接下来为大家讲解下常用的字段级别和标级别的分析方法。...缺失值的分析方法适用于所有字段类型,但对于缺失值的处理方法,则需要慎重选择。常见的处理方法如下: 不处理:当缺失记录较少,可忽略不计时,可以不处理 删除法:删除字段或删除记录。...对于是否删除数据,需看业务要求 填充法:可采用自定义填充法、推断填充法、数值统计填充法和建模填充法。...eg:自定义填充,可填充“unknown”,“未知”等;推断填充,可根据身份证号推断出出生日期和年龄等;数值统计填充,可填充均值、中位数或众数等;建模填充,则是通过回归、贝叶斯等算法建立模型来预测填充

    76420

    odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)

    然而,我们可能需要给定模型中字段之间的链接。有时,一个字段的值是根据其他字段的值确定的,有时我们希望帮助用户输入数据。...自然地我们将总面积定义这两者的总和,我们将为此使用计算的字段的概念,即给定字段的值将从其他字段的值中计算出来。 到目前为止,字段已直接存储在数据库中并直接从数据库中检索。字段也可以被计算。...在这种情况下,不会从数据库中检索字段的值,而是通过调用模型的方法来动态计算的字段的值。 要创建计算的字段,请创建字段并将其属性compute设置为方法的名称。...for record in self: record.description = "Test for partner %s" % record.partner_id.name 示例以 Many2one...提示: create_date 仅在记录创建时被填充,因此需要一个回退,防止创建时的奔溃 在表单和列表视图中添加字段,正如本章目标中显示的第二个动画中的一样。

    3.1K30

    工作六年,看到这样的代码,内心五味杂陈......

    挨个添加补充字段,工程量很多,出错概率极高 后续扩展容易 1.5 最终落地 在 mybatis 拦截器中, 通过改写 SQL。新增时填充环境字段值,查询时添加环境字段条件,真正实现改一处即可。...简单说了一些想法,比如可以跳过环境字段检查,不拼接条件;或者拼接所有条件,这样都能查询;亦或者看一下能不能注解来标志特定方法,你想一如何实现...... 年纪大了需要给年轻人机会。...他填充的环境字段取出来为 null,看来很久没找到原因,让帮他看看。 但是不久前也还教过他 Arthas 如何使用呢,这种问题应该不在话下吧?...填充颜色部分为小鲜肉的改造逻辑。 大概逻辑就是:将 env 字段填充所有环境。条件过滤的忽略的目的。...拿起手机看到快 12 点的那一刻,还是选择先回家了...... 四、总结思考 4.1 隔离总结 这是一个很好参考案例:在应用中既做了数据隔离,也做了数据共享。

    20710

    Java开发中如何自动填充SQL语句中的公共字段

    那么我们有哪些选择? 2.1 开发 Mybatis 审计插件 如果你使用了原生的Mybatis可以编写一个审计插件来实现这些功能。在之前讲解过Mybatis插件的教程,并不是非常难的事。...如果你想拿来就用,其实GitHub上提供了很多可供选择的Mybatis审计组件,你可以通过关键词Mybatis Audit来搜索到它们选择一款最适合你的。...,当然你可以根据需要添加更多你需要填充字段。...总结 今天我们 SQL 审计中的一些公共字段的自动填充的常用方案进行了一些介绍,特别对Mybatis Plus提供的功能进行了介绍相信能够帮助你简化一些样板代码的编写。...但是 SQL 审计并不仅仅这么简单,根据你的业务的不同会有不同的设计。

    2K10

    太秀了!用Excel也能实现和Python数据分析一样的功能!

    通常的处理方式如下: 平均值填充; 统计模型计算出来的值; 将缺失值的记录删除掉; 保留,只在做相应的分析中做必要的排除 批量填充 如何把下面的表格的合并单元格拆分开,转化成规范的数据。 ?...再按Ctrl+Enter,自动填充完成。...下面,我们需要利用批量填充,处理销售订单表中的产品名称字段,批量删除掉数值,只保留产品名。新建一列空白列,先输入几个正确的产品名称,按Ctrl+E,快速智能填充。 ?...函数(截取字符串):LEFT();RIGHT();MID() ② 随机抽样 RAND():返回0~1之间的小数; 如果返回 60~70 之间的,=INT(RAND()*10+60) RANDBETWEEN...点击【数据透视表和数据透视图向导】——选择【多重合并计算数据区域】——【创建单页字段】——下一步——选定将要操作的区域——下一步——选择【新工作表】——完成——双击【总计】的值——即实现二维表转为一维表

    2.1K10

    Jetpack组件之Room

    每个Entity至少有一个字段作为主键,如果让数据库为字段自动分配ID,可以使用autoGenerate,如果Entity想有符合主键,可以使用@Entity注解里的primaryKeys,设置复合主键...DAO可以是接口,也可以是抽象类,如果是抽象类,则该DAO可以选择有一个以RoomDatabase为唯一参数的构造函数。Room 会在编译时创建每个 DAO 实现。在DAO文件上方添加@DAO注解。...有时候,需要在应用启动的时候就加载一组特定的数据,这就称为预填充数据库。...从应用资源预填充 如需从位于应用assets/目录中的任意位置的预封装数据库文件预填充Room数据库,请先从RoomDatabase.Builder对象调用createFromAsset(),然后再调用...RxJava+Retrofit+SQLite组合使用,学习完Jetpack后,使用LiveData+Retrofit+Room封装了网络请求缓存框架,将Jetpack组合使用能更好的理解相关组件。

    1.9K20

    Salesforce Lightning的高效页面设计

    现在,当人们想要创建新的意向表单时,状态栏默认是「open」,修改这个选择看上去微不足道,对每个人来说只节省一两秒钟,但是对于拥有成千上万个人的组织来说,节省的时间就相当可观。...预填充关联字段 一些细节记录页面都包含「发布器/publisher」,允许用户快速记录号码或创建新任务/活动。比如下面这张表单: ? 通过发布器记录号码 ?...在这个例子中,用户正在填写一张姓名为 Walter Junior 的意向表单,他记录刚刚打完的电话。在发布器中,表单中有4个字段:主题、评论、姓名、相关。...每一个额外的字段对用户来说都是一道障碍。为了解决这个问题,我们设计了一种折衷方案:系统会根据上下文预先填充某些关键信息。这样做就能够扫除填写表单时的潜在障碍,因为用户需要填写的字段从4个变成了2个。...日期选择器控件&相关的 W3C 建议 上面所提到的并非只是为了易用性。重度使用键盘的高级用户也能够从一致的键盘体验中受益。高级用户能够轻易地在字段间切换并做必要的编辑,而不需要将手指移开键盘。

    1.8K30

    Wireshark中的ARP协议包分析

    ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。...Type字段为:ARP(0x0806)。说明该以太网帧封装的是一个ARP协议分组。ARP协议部分:前4个字段表明物理地址和逻辑地址的类型和长度。第五个字段Opcode的值为1,说明是ARP请求报文。...后面4个字段是源物理地址和IP地址,以及目标物理地址和IP地址。值得注意的是,目标物理地址正如之前所说,全部填充的0。因为该字段正是ARP请求报文需要获取的,目前不知,只能全部填充为0。...Source(源物理地址)字段的值为目的端的物理地址,该值和Sender MAC address的值相同。Padding是填充字段,用来填充以太网帧到最小帧长。...在ARP协议部分:前4个字段没什么好讲的。第五个字段Opcode为2,表示这是ARP响应分组。后面4个字段,源MAC地址正是ARP请求报文寻找的物理地址。

    34210
    领券