python - 如何从另一个模型的字段中读取值?
问题描述
我正在使用 odoo 10 并创建了一些字段,但存在以下问题:
我在模块 sale.order 中创建了自己的字段 (x_order_bestelldatum)。当我确认报价时,我在此字段中输入有效订单日期。现在,当我创建发票时,我想读取模块 account.invoice 中模块 sale.order 的 x_order_bestelldatum 字段,以便在发票上打印订单日期。
如何从模型 account.invoice 中的模型 sale.order 中读取字段 x_order_bestelldatum?
这是我在文件 models.py 中的代码,但它不起作用:
from odoo import models, fields, api
class felder_saleorder(models.Model):
_inherit = 'sale.order'
x_order_bestelldatum = fields.Date(string="Bestelldatum")
class felder_invoice(models.Model):
_inherit = 'account.invoice'
sale_order = fields.Many2one('sale.order','sale_order')
x_bestelldatum = fields.Date(string="Bestelldatum",related='sale_order.x_order_bestelldatum')
x_lieferdatum = fields.Date(string="Lieferdatum")
这不起作用(字段 x_bestelldatum 保持为空):
sale_order = fields.Many2one('sale.order','sale_order')
x_bestelldatum = fields.Date(string="Bestelldatum",related='sale_order.x_order_bestelldatum')
解决方案
好吧,让我们不要按照你的方式去做,而且我不明白你是怎么做的。因此,我建议其他一些可能对您有所帮助的可能性。
首先让我们谈谈您命名为“sale_order”的销售订单字段。在 sale_order 字段中输入数据有两个可能的选项。1)。自动通过python 2)。从列表中手动选择。
如果手动输入数据,您应该使用onchange 功能:
@api.onchange('sale_order')
def get_order_date(self):
if self.sale_order:
self.x_bestelldatum = self.sale_order.x_order_bestelldatum
如果您通过 python 自动输入数据,那么您可以使用货币或创建函数来填充该字段。
创建函数:
@api.model
def create(self, vals):
new_record = super(felder_invoice, self).create(vals)
if new_record.sale_order:
new_record.x_bestelldatum = new_record.sale_order.x_order_bestelldatum
return new_record
计算功能:
首先你需要像这样在py文件中修改你的场减速
x_bestelldatum = fields.Date(string="Bestelldatum",compute="get_order_date")
然后你需要为此创建一个计算函数:
@api.one
@api.depends('sale_order')
def get_order_date(self):
if self.sale_order:
self.x_bestelldatum = self.sale_order.x_order_bestelldatum
您可以使用上述功能获取订单日期,并将能够在报告/打印中获取其值。希望能帮助到你。干杯!
推荐阅读
- ios - 集合视图最后一项右对齐
- python - 如何检查 Pandas DataFrame 中的列值类型
- angular - 从角度调用基于 java 的 API 时出错
- pdf - 使用 ImageMagick 从 PDF 转换为图像时仅获取前几个字符
- azure-spatial-anchors - 创建 Anchor 的最佳设备是什么?可以处理的最大近锚数量是多少?
- javascript - 中间的内容
- excel - 在工作表之间传输大量数据的最快方法
- python - 排序结构化数组的性能(numpy)
- java - 如何使用 Selenium 和 Java 定位元素
- c# - 当尝试`uint mask = ~0;`时,常量值'-1'不能转换为'uint'