python - 在 Odoo 13 的另一个模型中使用选择字段
问题描述
我完全是一个非常喜欢 Odoo 的新手 :)
我在 Odoo CE 13 中被这个问题困扰了几天。
我希望我在sale.order中制作的 SHIPPING TYPE 字段也可以在purchase.order中使用。
所以我在shipping_type.py中做了这个
# -*- coding: utf-8 -*-
from odoo import models, fields
class SaleOrder(models.Model):
_inherit = 'sale.order'
shipping_selection = [
('type1', 'Instant'),
('type2', 'Same Day'),
('type3', 'JNE'),
('type4', 'Tokopedia'),
('type5', 'Pick Up'),
('type6', 'AnterAja-Reguler'),
('type7', 'J&T-Reguler'),
('type8', 'Ninja-Reguler'),
]
shipping_type = fields.Selection(shipping_selection,'Shipping Type',)
然后,我试图在另一个插件中制作purchase_shipping_type.py ,并创建了这个:
# -*- coding: utf-8 -*-
from odoo import models, fields
class SaleOrder(models.Model):
_inherit = ['sale.order']
shipping_selection = [
('type1', 'Instant'),
('type2', 'Same Day'),
('type3', 'JNE'),
('type4', 'Tokopedia'),
('type5', 'Pick Up'),
('type6', 'AnterAja-Reguler'),
('type7', 'J&T-Reguler'),
('type8', 'Ninja-Reguler'),
]
shipping_type = fields.Selection(shipping_selection,'Shipping Type',)
class PurchaseOrder(models.Model):
_inherit = ['purchase.order']
shipping_type_purchase = fields.Selection(string='Shipping Type',related=shipping_type.shipping_type_purhase, readonly=True)
出现了这个错误:
Aug 21 06:29:03 kama-odoo-server odoo13[24202]: NameError: name 'shipping_type' is not defined - - -
如何正确设置?我真的希望有人可以帮助我:) 谢谢!
解决方案
相关属性用于指定字段名称的序列。
通过遵循一系列关系字段并读取到达模型上的字段来给出相关字段的值。要遍历的字段的完整序列由相关属性指定。
使用选择字段时,该属性selection
是强制性的,除非是相关或扩展字段。
您可以在帐户模型中找到相关的选择字段,声明如下:
user_type_id = fields.Many2one('account.account.type', ...)
internal_type = fields.Selection(related='user_type_id.type', ...)
您还可以在帐户合作伙伴中找到一个选择字段,该字段使用基本模型中声明的常量列表:res_partner
from odoo.addons.base.models.res_partner import WARNING_MESSAGE, WARNING_HELP
invoice_warn = fields.Selection(WARNING_MESSAGE, 'Invoice', help=WARNING_HELP, default="no-message")
要保留shipping_selection
inSaleOrder
类的声明,您需要删除related
属性并修改shipping_type_purchase
字段,如下所示:
shipping_type_purchase = fields.Selection(shipping_selection, ...)
如果SaleOrder
类没有在同一个模块中声明,你只需像上面的例子一样导入它。
您可以将 decalreshipping_selection
作为常量列表,然后修改该shipping_type_purchase
字段:
SHIPPING_SELECTION = [
('type1', 'Instant'),
('type2', 'Same Day'),
('type3', 'JNE'),
('type4', 'Tokopedia'),
('type5', 'Pick Up'),
('type6', 'AnterAja-Reguler'),
('type7', 'J&T-Reguler'),
('type8', 'Ninja-Reguler'),
]
class SaleOrder(models.Model):
shipping_type = fields.Selection(SHIPPING_SELECTION, ...)
class PurchaseOrder(models.Model):
shipping_type_purchase = fields.Selection(SHIPPING_SELECTION, ...)
推荐阅读
- reactjs - 当 Redux 存储发生变化时,阻止整个组件重新渲染
- javascript - JavaScript 组件转换为 TypeScript:props 的类型是什么
- image-processing - 热和 RGB 多视图图像配准
- python - 邮递员 - 记录太多
- swift - Viper 处理表格单元格操作
- amazon-web-services - 触发 lambda 时的 SQS 计费
- android - 如何创建扩展 Google MapView 的自定义地图视图
- laravel - 我有一个 laravel 应用程序,它显示一个带有数据表的表格。我正在使用服务器端数据表,数据集有超过 15k 行
- karate - 如何获取空手道 ui 测试的测试执行视频
- node.js - 无法安装 Vue.js Cli