当前位置: 首页 > news >正文

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

从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.lryc.cn/news/487786.html

相关文章:

  • 单片机GPIO中断+定时器 实现模拟串口接收
  • 《深入理解 Spring MVC 工作流程》
  • HTML简介
  • Linux系统Centos设置开机默认root用户
  • 【网络安全 | 甲方建设】双/多因素认证、TOTP原理及实现
  • Nuxt3 动态路由URL不更改的前提下参数更新,NuxtLink不刷新不跳转,生命周期无响应解决方案
  • 2024华为java面经
  • 2021 年 9 月青少年软编等考 C 语言三级真题解析
  • 深度解析FastDFS:构建高效分布式文件存储的实战指南(下)
  • Python学习29天
  • Soul App创始人张璐团队携多模态大模型参加GITEX GLOBAL,展现未来社交趋势
  • 简单工厂模式、方法工厂模式
  • 【面试】前端vue项目架构详细描述
  • BERT的中文问答系统32
  • 大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 拦截器实现 Java
  • idea maven 重新构建索引
  • C#桌面应用制作计算器
  • 细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的方法
  • 【Unity/Animator动画系统】多层动画状态机实现角色的基本移动
  • 每日算法一练:剑指offer——栈与队列篇(1)
  • 【Java】ArrayList与LinkedList详解!!!
  • 怎么用VIM查看UVM源码
  • 数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题
  • 第二十五章 TCP 客户端 服务器通信 - TCP 设备的 READ 命令
  • 【C++】哈希表的实现详解
  • 高阶C语言之五:(数据)文件
  • 服务器上部署并启动 Go 语言框架 **GoZero** 的项目
  • 【Java SE 】继承 与 多态 详解
  • 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法
  • 秋招大概到此结束了