解决BUG: Since 17.0, the “attrs“ and “states“ attributes are no longer used.

news/2024/11/23 19:16:25/

从Odoo 17.0开始,attrsstates属性不再使用,取而代之的是使用dependsdomain属性来控制字段的可见性和其他行为。如果您想要在选择国家之后继续选择州,并且希望在选择了国家之后才显示州字段,您可以使用depends属性来实现这一点。

以下是如何在Odoo 17.0及更高版本中实现这个功能的步骤:

1. 更新模型定义

group_send.user模型中定义两个字段:一个用于国家,一个用于州。

from odoo import models, fieldsclass GroupSendUser(models.Model):_name = 'group_send.user'_description = 'Group Send User'# 其他字段...country_id = fields.Many2one('res.country', string='Country')state_id = fields.Many2one('res.country.state', string='State/Province', depends=['country_id'])

2. 修改视图定义

在表单视图中添加这两个字段,并使用domain属性来控制州字段的可见性。

<record id="group_send_form_view" model="ir.ui.view"><field name="name">group_send.user.form</field><field name="model">group_send.user</field><field name="arch" type="xml"><form string="Group Send"><sheet><group><field name="name"/><field name="country_id" options="{'no_create': True}"/><field name="state_id" domain="[('country_id', '=', country_id)]" /><!-- 其他字段 --></group></sheet></form></field>
</record>

3. 定义on_change方法

在模型中定义on_change方法,当国家改变时,根据选择的国家更新州的选项。

class GroupSendUser(models.Model):# ...其他方法和字段...def on_change_country(self, country_id):if not country_id:return {'value': {'state_id': False}}state_ids = self.env['res.country.state'].search([('country_id', '=', country_id)])return {'value': {'state_id': state_ids and state_ids[0].id or False}}

4. 注册on_change方法

在模型中注册on_change方法,以便在国家字段变更时自动调用。

    # 在类定义中添加@api.onchange('country_id')def on_change_country(self):if self.country_id:return self.on_change_country(self.country_id.id)

注意事项

  • 确保您的Odoo系统已经安装了标准国家和州/省的列表,或者您有自定义的州/省列表。
  • on_change方法提供了一个简单的国家变更时的响应,您可能需要根据实际业务逻辑调整这个方法。
  • 级联效应(如on_change)可能会影响性能,尤其是在数据量大时,因此请确保合理使用。

按照这些步骤,您应该能够在Odoo 17.0及更高版本中实现在选择国家之后继续选择州的功能。


http://www.ppmy.cn/news/1549352.html

相关文章

C++语言之模版与类型转换

模版 C的泛型编程 可以将数据类型作为参数进行传递 关键字: C模版的语法使用"<>"来表示泛型类型,并使用关键字template来定义和声明模版 分类: 模版函数 模版类 模版函数 语法: template<class 假设的类型1,class 假设的类型2,.......> 或 template<t…

aws建立多区域只读库

文章目录 一、Aurora数据库创建多区域注意项&#xff1a;二、aws-rds多区域只读库建立三、cli 创建实例: 一、Aurora数据库创建多区域注意项&#xff1a; aurora数据库 开启跨区域必须是主库不低于db.r5.large规格, 目标区域規格使用db.r5.large&#xff0c;使用低于此规格的将…

8年测试工程师 —— 如何使用Playwright优化测试性能!

优化Playwright测试性能是确保自动化测试快速、可靠地执行的重要环节。以下是一些具体的策略和技术&#xff0c;可以帮助你提高Playwright测试的性能&#xff1a; 1. 减少不必要的页面加载 避免重定向&#xff1a;确保测试URL直接指向最终页面&#xff0c;避免不必要的重定向。…

Delphi ADO组件中的 ADOTable、ADOQurey 无SQL语句实现增、删、改、查

准备&#xff1a; 数据库是Acess数据库 1.放一个 Adoconnection1到 表单上,设置好数据连接字符串 并 设置 connected 属性 为 true 2 设置 adoquery1的connection 属性为 adoconnection1 3 设置 adoquery1的 sql 属性为 select * from 表名 4 设置 adoquery1的 active true …

gitHub常用操作

gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork&#xff0c;fork下来&#xff1a;将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址&#xff08;fork…

C++定义函数有多个形参,定义结构体作为形参

如题&#xff0c;在定义函数时有时会遇到该函数需要传递多个形参(>3)的情况&#xff0c;如果一个个列出来&#xff0c;不管是函数声明还是函数调用都会导致这一句很长很长&#xff0c;这种情况可以定义一个结构体包含这些参数&#xff0c;然后把结构体变量作为函数的形参&am…

23、论文阅读:基于多分辨率特征学习的层次注意力聚合GAN水下图像增强

Hierarchical attention aggregation with multi-resolution feature learning for GAN-based underwater image enhancement 引言介绍相关工作2.1 传统方法2.1.1 图像增强方法2.1.2 图像复原方法 基于深度学习的方法基于卷积神经网络&#xff08;CNN&#xff09;的方法基于生成…

LeetCode题练习与总结:最长回文串--409

一、题目描述 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回 通过这些字母构造成的 最长的 回文串 的长度。 在构造过程中&#xff0c;请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 示例 1: 输入:s "abccccdd" 输出:7 解释:…